Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 编辑文本奇怪的焦点行为_Android_Android Edittext - Fatal编程技术网

Android 编辑文本奇怪的焦点行为

Android 编辑文本奇怪的焦点行为,android,android-edittext,Android,Android Edittext,好, 当我把注意力集中在编辑文本和键盘上时,就会显示出。我点击edittext末尾的我的drawable(取消按钮)。我用onTouchListener识别这个事件,并隐藏键盘、清除焦点等 但是,当我“触摸”取消按钮时,它会隐藏键盘,但焦点仍停留在编辑文本上。表示光标仍在显示,但不闪烁。因此,当我再次单击编辑文本以获得焦点时,它会显示复制/粘贴选项,等等,就像我长按光标而不显示键盘一样 但当我“按下”取消按钮时,它会清除焦点,隐藏键盘,最重要的是,它会隐藏光标,从而完全移除焦点。然后,当我再次单

好,

当我把注意力集中在编辑文本和键盘上时,就会显示出。我点击edittext末尾的我的drawable(取消按钮)。我用onTouchListener识别这个事件,并隐藏键盘、清除焦点等

但是,当我“触摸”取消按钮时,它会隐藏键盘,但焦点仍停留在编辑文本上。表示光标仍在显示,但不闪烁。因此,当我再次单击编辑文本以获得焦点时,它会显示复制/粘贴选项,等等,就像我长按光标而不显示键盘一样

但当我“按下”取消按钮时,它会清除焦点,隐藏键盘,最重要的是,它会隐藏光标,从而完全移除焦点。然后,当我再次单击编辑文本时,它会恢复焦点并显示键盘

这种奇怪的行为是什么?我如何让它总是做“新闻”行为

我的代码:

searchView.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            if (event.getAction() == MotionEvent.ACTION_UP) {
                if (event.getRawX() >= searchView.getRight() - searchView.getCompoundDrawables()[2].getBounds().width()) {
                    hideKeyboard(v);
                    isSearching = false;
                    searchView.setText("");
                    searchView.clearFocus();
                    searchView.setFocusable(false);
                    searchView.setFocusableInTouchMode(false);
                    getView().requestFocus(); // parent has both focusables true
                    searchView.setFocusable(true);
                    searchView.setFocusableInTouchMode(true);
                    fetchArticles();

                    return true;
                }
            }
            return false;
        }
    });

正如你所看到的,我正在尽我所能去做同样的事情。然而,到目前为止没有运气。希望你们能帮助我

在编辑文本的父级或要触摸的视图中尝试以下操作:

android:clickable="true"
android:focusable="true" 
android:focusableInTouchMode="true"
它将允许将焦点从EditText完全转移到其他地方

但是,如果您的drawable位于Edittext中,如下图所示:

android:drawableLeft="@drawable/my_icon"

在布局中将drawable设置为单独视图之前,该解决方案将无法工作。

确定,因此我当前的“解决方案”是@Dmitry Pavlukhin建议的解决方案


我没有从EditText本身使用drawableEnd,而是创建了一个单独的视图,该视图具有相同的drawableEnd,并确保在相同的位置绘制它。现在,当我单击此视图时,它会100%按需要清除视图。代码库与问题中的代码库仍然相同,但是它现在在单独视图上的OnClick中实现。

为什么在不需要焦点的情况下请求焦点?您确定
getView().requestFocus()中的
getView()
返回父视图吗?看起来您正在为同一视图而不是父视图请求焦点。是的,非常确定它引用了Fragment.getView();。我也尝试过其他视图。searchView是XML中最后一个可聚焦的视图吗?因为如果是这样的话,你就面临着安卓系统的问题。你看,你试图将焦点从视图中清除,但是它没有其他视图可以聚焦,这就是为什么光标没有消失的原因。也许你正在做一些不同的事情。我现在在我的项目中进行了测试。我在RelativeLayout中有2个编辑文本。当我用这个亲戚的xml写上面的行,然后在编辑文本外按亲戚,焦点消失,键盘和光标隐藏。是的,我也会这样。但是,当我在编辑文本的末尾按我的drawable时。我需要手动取消edittext等,然后它就不工作了。这是edittext的可绘制部分还是布局中的独立视图?也许你的解决方案是将其分离?值得一试,我没有任何其他想法。