美文网首页程序员
RecycleView条目中包含多个EditText,解决Edi

RecycleView条目中包含多个EditText,解决Edi

作者: 菜鸟小生 | 来源:发表于2018-11-19 11:22 被阅读0次

    开发环境:JDK:1.8  开发工具及版本:AndroidStudio3.1.2   gradle版本:4.4_all

    需求以及问题描述:

    Recycleview条目里面有多个输入框和其他控件,例如Textview,Spinner等,如图;

    出现的问题是:当先点击一个EditText,光标显示时(此时已经手动收了软键盘),滑到屏幕下方,此时点击除EditText以外的控件,点击Spinner为例,选好内容后,屏幕会自动滑到之前那个EditText那里.

    小生我文字功底不行,怕写的问题表达不清,特地拍了一个小视频描述具体问题,地址是优酷的,

    小生我文字功底不行,怕写的问题表达不清楚,特地拍了一个小视频描述具体问题,地址是优酷的,有兴趣的看官可以看一下.

    EditText抢占焦点问题描述

    解决方法:

    在这个RecycleView对应的界面,改写触摸事件,加一层关于EditText焦点的判断,直接上代码:

    @Override

        public boolean dispatchTouchEvent(MotionEvent ev) {

            if (ev.getAction() == MotionEvent.ACTION_DOWN) {

                // 获取当前焦点所在的控件;

                View view = getCurrentFocus();

                if (view != null && view instanceof EditText) {

                    Rect r = new Rect();

                    view.getGlobalVisibleRect(r);

                    int rawX = (int) ev.getRawX();

                    int rawY = (int) ev.getRawY();

                    // 判断点击的点是否落在当前焦点所在的 view 上;

                    if (!r.contains(rawX, rawY)) {

                        view.clearFocus();

                    }

                }

            }

            return super.dispatchTouchEvent(ev);

        }

    然后问题就解决了.

    我原本以为还要处理条目里的EditText的点击事件重新获取焦点,发现不用了,估计是系统自动处理好了,不用重新处理EditText的点击事件了.

    参考博客:https://blog.csdn.net/ly1414725328/article/details/50811314

    有不足之处还请大家多多指教!!!

    相关文章

      网友评论

        本文标题:RecycleView条目中包含多个EditText,解决Edi

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