文档章节

Android 点击任意位置收起软键盘

MrLins
 MrLins
发布于 09/18 09:53
字数 223
阅读 14
收藏 0
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
    AppUtils.hideInputWhenTouchOtherView(this, ev, getExcludeTouchHideInputViews());
    return super.dispatchTouchEvent(ev);
}

//排除的View
private List<View> getExcludeTouchHideInputViews() {
    List<View> views = new ArrayList<>();
    views.add(editPassWord);
    views.add(editUserName);
    return views;
}

/**
     * 当点击其他View时隐藏软键盘
     * @param activity
     * @param ev
     * @param excludeViews  点击这些View不会触发隐藏软键盘动作
     */
    public static final void hideInputWhenTouchOtherView(Activity activity, MotionEvent ev, List<View> excludeViews){


        if (ev.getAction() == MotionEvent.ACTION_DOWN){
            if (excludeViews != null && !excludeViews.isEmpty()){
                for (int i = 0; i < excludeViews.size(); i++){
                    if (isTouchView(excludeViews.get(i), ev)){
                        return;
                    }
                }
            }
            View v = activity.getCurrentFocus();
            if (isShouldHideInput(v, ev)){
                InputMethodManager inputMethodManager = (InputMethodManager)
                        activity.getSystemService(Context.INPUT_METHOD_SERVICE);
                if (inputMethodManager != null){
                    inputMethodManager.hideSoftInputFromWindow(v.getWindowToken(), 0);
                }
            }

        }
    }

public static final boolean isTouchView(View view, MotionEvent event){
        if (view == null || event == null){
            return false;
        }
        int[] leftTop = {0, 0};
        view.getLocationInWindow(leftTop);
        int left = leftTop[0];
        int top = leftTop[1];
        int bottom = top + view.getHeight();
        int right = left + view.getWidth();
        if (event.getRawX() > left && event.getRawX() < right
                && event.getRawY() > top && event.getRawY() < bottom){
            return true;
        }
        return false;
    }

    public static final boolean isShouldHideInput(View v, MotionEvent event){
//这里可以添加自定义View
        if (v != null && (v instanceof EditText)){
            return !isTouchView(v, event);
        }
        return false;
    }

© 著作权归作者所有

MrLins
粉丝 5
博文 62
码字总数 28057
作品 0
松江
程序员
私信 提问
Android 调用虚拟返回键函数onBackPressed()

Android自带有虚拟返回键,但一般在界面左上角还是会做一个返回按钮。刚开始写Android的时候返回按钮的处理逻辑就是结束当前的Activity,调用的是finish()。 后来做表单的过程中发现一个问题...

Kid_Lau
2016/09/04
1K
0
React Native 小记 - TouchableOpacity 单次点击无效

一般是焦点问题,解决方法:即在 ScrollView 标签内,根据情况设置其 属性值为 或者 。详细解决过程如下: 0x00 描述 收到测试人员提交的 Bug:帐号密码输入完毕按返回键关闭键盘后,点击登录...

cafeting
2018/10/23
0
0
ios 最新系统bug与解决——微信公众号中弹出键盘再收起时,原虚拟键盘位点击事件无效

最近ios发布新版本系统12.1,随着部分用户的系统更新,一些问题也渐渐暴露出来。。。 公司用户反映微信公众号出现了点击无效的bug!!测试调查发现,只有iphonex、iphone6,ihpone7等部分机型...

ZoenLeo
2018/12/06
0
0
ios系统在微信浏览器中的bug-键盘弹出再收起后,界面点击区域失效

最近ios发布新版本系统12.1,随着部分用户的系统更新,一些问题也渐渐暴露出来。。。 公司做个活动页,在ios系统中弹出登录界面,在键盘弹出再收起后,反应点击区域会无效 在H5端是没法监控键...

醉雨
09/06
34
0
Appium+Python3+ Android

Appium+Python3+ Android入门 前言: Appium 是一个自动化测试开源工具,支持 iOS 平台和 Android 平台上的原生应用,web 应用和混合应用。 desired_caps = {} desired_caps['platformName']...

那一年-漫天雪
05/09
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Archiva 不小心删掉了管理员权限怎么办

Archiva 的界面和 UI 比较容易出问题。 在添加用户和为用户进行权限修改的时候,不小心连 admin 这个用户的权限都删掉了。 这个时候应该如何恢复 admin 这个用户的权限? 这个时候你可以尝试...

honeymoose
36分钟前
5
0
Java8新特性之空指针异常的克星Optional类

Java8新特性系列我们已经介绍了Stream、Lambda表达式、DateTime日期时间处理,最后以“NullPointerException” 的克星Optional类的讲解来收尾。 背景 作为开发人员每天与NullPointerExceptio...

程序新视界
49分钟前
4
0
OSChina 周四乱弹 —— 福布斯终身秃头奖

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @宇辰OSC :分享如是我闻的单曲《地藏经上卷》: 如是我闻#今日歌曲推荐# 《地藏经上卷》- 如是我闻 手机党少年们想听歌,请使劲儿戳(这里) ...

小小编辑
52分钟前
196
8
Mybatis Plus删除

/** @author beth @data 2019-10-17 00:30 */ @RunWith(SpringRunner.class) @SpringBootTest public class DeleteTest { @Autowired private UserInfoMapper userInfoMapper; /** 根据id删除......

一个yuanbeth
今天
6
0
总结

一、设计模式 简单工厂:一个简单而且比较杂的工厂,可以创建任何对象给你 复杂工厂:先创建一种基础类型的工厂接口,然后各自集成实现这个接口,但是每个工厂都是这个基础类的扩展分类,spr...

BobwithB
今天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部