我有一个带有编辑文本的AlertDialog。当您按下后退键时,键盘会熄灭(应该如此),但编辑文本仍然具有焦点。如果再次按后退键,整个对话框将消失。
我希望在隐藏键盘时从对话框中的编辑文本中删除焦点,但无法弄清楚如何操作。
请注意,我不想覆盖onBackPressed或类似内容,因为我只想控制在对话框启动时按下后退按钮时会发生什么。
有什么想法吗?
答案 0 :(得分:1)
我的问题的解决方案部分是因为@ kabuto178说 - 我使用了一个可聚焦frameLayout
作为我的EditText
的父级,然后在按下后退键时调用了edittext.clearFocus()
,父frameLayout获得了焦点:
final FrameLayout parent = new FrameLayout(context);
final EditText v = new EditText(context);
parent.setLayoutParams(new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ActionBar.LayoutParams.WRAP_CONTENT));
parent.addView(v);
parent.setFocusableInTouchMode(true);
v.requestFocus();
答案 1 :(得分:0)
EditText
窗口小部件有一个可以使用的方法edittext.clearFocus();
将焦点设置回活动中的第一个可聚焦视图,但如果活动中只有一个视图,那么将会有没有其他视图可以将焦点移动到或者您可以手动将焦点设置到布局中的另一个视图,这将删除光标。为了控制对背景的关注,你必须覆盖我所知道的onBackPressed()
。