一行代码实现Android软键盘和EditText各种交互
Switch branches/tags
Nothing to show
Clone or download
zybieku Merge pull request #10 from xiangnan/bugfix
fix:proxy method memory leak
Latest commit d81514e Sep 1, 2018
Permalink
Failed to load latest commit information.
app fix:proxy method memory leak Aug 31, 2018
gif update sample Jun 29, 2017
gradle/wrapper 添加proxy方式 May 21, 2018
.gitignore 忽略.idea目录 May 18, 2018
LICENSE.txt add license Sep 11, 2017
LICENSE.txt.bak add license Sep 11, 2017
README.md 更新文档 May 21, 2018
build.gradle 添加proxy方式 May 21, 2018
gradle.properties first commit May 20, 2017
gradlew first commit May 20, 2017
gradlew.bat first commit May 20, 2017
settings.gradle first commit May 20, 2017

README.md

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

介绍 : 有一个很常见的需求,就是页面中软键盘打开时,希望能点击屏幕其他的任何位置,就能把软键盘给隐藏掉.

比如登录, 注册之类的常见页面.

在实际开发中,很多大佬通过其他控件的点击事件,在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());
        }

修复bug: 修复连续点击EditText,软键盘会先关闭在打开的问题


效果 :

图片


由于半年多没写Android,很多代码陌生了,欢迎各位大佬提pull request

喜欢的朋友记得点个Star 具体详情请看主页 博客地址