android - EditText 奇怪的焦点行为
问题描述
好吧,
当我专注于我的 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;
}
});
就像您看到的那样,我正在尽我所能来始终获得相同的行为。然而到目前为止还没有运气。希望你们能帮助我!
解决方案
在该 EditText 的父级或要触摸的视图中尝试这些:
android:clickable="true"
android:focusable="true"
android:focusableInTouchMode="true"
它将允许将焦点从 EditText 完全转移到其他地方
但是,如果您的可绘制对象位于 Edittext 内部,如下所示:
android:drawableLeft="@drawable/my_icon"
在您将可绘制为布局中的单独视图之前,该解决方案将不起作用。
推荐阅读
- python - 需要在 groupby 调用中优化/避免 pandas .resample(对于 1.4k 行,需要将其降低到 <60 秒——目前 > 160 秒)
- amazon-rds - AWS Aurora Serverless 连续喷出 2 个特定错误
- algorithm - 图论:找到边“方向”组合的最佳算法,其中每个节点最多有一条边指向它
- swift - 在 RadarChartData 处设置标签
- php - Laravel 控制器中非重复请求验证的解决方案?
- php - 将 PUT 和 POST 和 DELETE 放在一起的表格
- ruby-on-rails - 简单表单-控制标签和输入的宽度(带引导程序)
- python - 在 matplotlib 中显示张量图像
- revit-api - Revit API python错误:异常:idx只能是0、1、2
- ios - Swift iOS GoogleAPIClientForREST – Shell 脚本调用错误 GTMSessionFetcher.framework:没有这样的文件或目录