美文网首页
输入法软键盘自动隐藏/显示(递归遍历是否是EditText,是则

输入法软键盘自动隐藏/显示(递归遍历是否是EditText,是则

作者: KernHu | 来源:发表于2018-06-22 17:34 被阅读0次

    需求场景:假设一个界面上有EditText,或者item中有EditText,使用EditText必然导致输入法软键盘显示隐藏,用户总是手动点击关闭关键盘体验稍微差一些。

    因此:该工具类借鉴他人的一些方法,采用了一种比较便捷的方式:递归根布局,查看根布局的子View如果是非EditText,则设置Touch事件关闭软键盘,反之则继续递归。

    先上效果图:

    代码量非常少,核心代码就是一个递归算法:

        /**

        * the function is recursive until the ViewGroup don't have childView

        *

        * @param view the root view in your layout

        */

        public void setRootView(View view) {

            if (view != null) {

                if (!(view instanceof EditText)) {

                    if (view != null) {

                        view.setOnTouchListener(new View.OnTouchListener() {

                            @Override

                            public boolean onTouch(View view, MotionEvent motionEvent) {

                                InputMethodUtils.getInstance(mActivity).hideSoftInput();

                                return false;

                            }

                        });

                    }

                }

                if (view instanceof ViewGroup) {

                    for (int i = 0; i < ((ViewGroup) view).getChildCount(); i++) {

                        View inView = ((ViewGroup) view).getChildAt(i);

                        setRootView(inView);

                    }

                }

            }else{

                throw new NullPointerException("root view is null");

            }

        }

    使用方式:

    一:在build.gradle中添加依赖

    Step 1. Add the dependency

    dependencies {

            compile 'cn.walkpast.filbert:RecursInputMethod:1.0.2'

    }

    二:给xxx.xml 布局的根布局添加id

    三:在onCreate中一行代码:

    RecursInputMethod

                    .getInstance()

                    .setActivity(this)

                    .setRootView(findViewById(R.id.root_layout))

                    .build();

    完整代码已上传GitHub

    https://github.com/KernHu/FilbertTool

    可以直接依赖,比较方便使用。

    相关文章

      网友评论

          本文标题:输入法软键盘自动隐藏/显示(递归遍历是否是EditText,是则

          本文链接:https://www.haomeiwen.com/subject/xoxlyftx.html