Android通过一行代码实现软键盘与EditText的交互

[复制链接]
来自: littleRed 分类: Android精品源码 上传时间: 2019-1-24 11:09:54
Tag:

项目介绍:

介绍 : 有一个很常见的需求,就是页面中软键盘打开时,希望能点击屏幕其他的任何位置,就能把软键盘给隐藏掉.
比如登录, 注册之类的常见页面.
在实际开发中,很多大佬通过其他控件的点击事件,在onclick方法中调用软键盘的隐藏方法.
在页面复杂的时候,要实现的onclick方法会很多,甚至还会有逻辑处理冲突的情况.这样做就显得非常不友好.

方式一 继承方式
原理 : 怎样封装成一行代码实现,就是重写Activity的dispatchTouchEvent(MotionEvent ev)方法,全局监听触摸事件, 当点击的页面时,发现如果焦点在EditView上,就把软键盘隐藏,否则就不做处理.
使用: 只要对应的页面 重写下面一个方法,改变return的返回值即可
   @Override   public int[] hideSoftByEditViewIds() {       return 传入页面EditText的id[]   }
如果要对某些控件进行过滤 ,可以重写
   @Override public View[] filterViewByIds() {        return 传入要过滤的View[] }方式二 proxy链式调用(由jiiiiiin提供)      try {            mActivityKeyBoardProxy = ActivityKeyBoardProxyBuild.getInstance()                    .withActivity(this)                    .withHideSoftByEditViewIds(new int[]{R.id.et_phone, R.id.et_check_code, R.id.et_city_code})                    .withFilterViewByIds(new View[]{mBtnCode})                    .withOnHideInputForceListener(new ActivityKeyBoardProxy.OnHideInputForceListener() {                        @Override                        public void onHideInputForce(MotionEvent motionEvent) {                            Log.d(TAG, "隐藏了系统键盘");                        }                    })                    .build();        } catch (Exception e) {            e.printStackTrace();            Log.e(TAG, e.getMessage());        }


相关源码推荐:

我来说两句
所有评论(34)
柠檬lemon 2019-1-24 11:20:56
支持楼主,支持安卓巴士!
回复
A5下载 2019-1-24 11:24:56
淡定,淡定,淡定……
回复
莫应有道 2019-1-24 11:25:39
楼主是好人,回个帖会有安币吗?
回复
Yf8546 2019-1-24 11:38:24
不错不错,楼主辛苦了。。。
回复
小小码农number1 2019-1-24 11:49:51
淡定,淡定,淡定……
回复
rebecca 2019-1-24 11:51:12
支持楼主,支持安卓巴士!
回复
einnius2012 2019-1-24 12:06:57
帮帮顶顶!!
回复
12345下一页
提取码:  下载次数:39 状态:已购或VIP 售价:15(原价:15)金钱 下载权限:初级码农 
1351 2 39
代码贡献英雄榜
用户名 下载数
联系我们
首页/微信公众账号投稿
帖子代码编辑/版权问题
QQ:435399051,1294855032
如何获得代码达人称号?
如何成为签约作者?
领先的中文移动开发者社区
18620764416
7*24全天服务
意见反馈:1294855032@qq.com

扫一扫关注我们

Powered by Discuz! X3.2© 2001-2019 Comsenz Inc.( 粤ICP备15117877号 )