好的,
当我专注于我的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;
}
});
就像你看到的那样,我正在尽我所能去做同样的行为。但到目前为止没有运气。希望你们能帮助我!
在EditText的父级或想要触摸的视图中尝试这些:
android:clickable="true"
android:focusable="true"
android:focusableInTouchMode="true"
它将允许将焦点从EditText完全转移到其他位置
但是,如果您的drawable在Edittext中,如下所示:
android:drawableLeft="@drawable/my_icon"
直到您将drawable作为布局中的单独视图进行解决方案才会生效。
Oke所以我目前的“解决方案”是@Dmitriy Pavlukhin建议的解决方案。
我没有使用EditText本身的drawableEnd,而是创建了一个具有相同drawable的单独视图,并确保在同一位置绘制它。现在,当我单击此视图时,它会100%按时清除视图。代码库在问题上仍然是相同的,但现在它在分离视图的OnClick中实现。