EditText奇怪的焦点行为

问题描述 投票:1回答:2

好的,

当我专注于我的EditText并且键盘等正在显示时。我点击edittext末尾的drawable(取消按钮)。我用onTouchListener识别这个事件,并自己隐藏键盘,清晰焦点等。

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

但当我按下“取消”按钮时,它会清除焦点,隐藏键盘,最重要的是它会隐藏光标,从而完全消除焦点。然后当我再次点击edittext时,它会重新聚焦并显示键盘。

什么是这种奇怪的行为,我怎么做它始终做'按'行为。

我的代码:

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 android-edittext
2个回答
1
投票

在EditText的父级或想要触摸的视图中尝试这些:

android:clickable="true"
android:focusable="true" 
android:focusableInTouchMode="true"

它将允许将焦点从EditText完全转移到其他位置

但是,如果您的drawable在Edittext中,如下所示:

android:drawableLeft="@drawable/my_icon"

直到您将drawable作为布局中的单独视图进行解决方案才会生效。


0
投票

Oke所以我目前的“解决方案”是@Dmitriy Pavlukhin建议的解决方案。

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

© www.soinside.com 2019 - 2024. All rights reserved.