Android 编辑文本奇怪的焦点行为
好, 当我把注意力集中在编辑文本和键盘上时,就会显示出。我点击edittext末尾的我的drawable(取消按钮)。我用onTouchListener识别这个事件,并隐藏键盘、清除焦点等 但是,当我“触摸”取消按钮时,它会隐藏键盘,但焦点仍停留在编辑文本上。表示光标仍在显示,但不闪烁。因此,当我再次单击编辑文本以获得焦点时,它会显示复制/粘贴选项,等等,就像我长按光标而不显示键盘一样 但当我“按下”取消按钮时,它会清除焦点,隐藏键盘,最重要的是,它会隐藏光标,从而完全移除焦点。然后,当我再次单击编辑文本时,它会恢复焦点并显示键盘 这种奇怪的行为是什么?我如何让它总是做“新闻”行为 我的代码:Android 编辑文本奇怪的焦点行为,android,android-edittext,Android,Android Edittext,好, 当我把注意力集中在编辑文本和键盘上时,就会显示出。我点击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的可绘制部分还是布局中的独立视图?也许你的解决方案是将其分离?值得一试,我没有任何其他想法。