我在使用EditText或其他输入/选择器时遇到一些麻烦,而不是当前正在播放的视图/片段。我的新片段在创建时调用了传递片段中的EditText或picker。
我知道解决这个问题的方法。我可以在requestFocus()
上使用一些虚拟视图。
或者有时候(而且那个问题)在activity.getCurrentFocus().clearFocus();
上
但对于最后一个看起来失败了1/2。
所以这是我的问题:如何工作getCurrentFocus()
,他是否只检查当前活动视图或儿童片段?为什么每次都不工作?
如果有人带领这一点,将会感恩:D
答案 0 :(得分:0)
如果获得焦点的视图每次都可以尝试这样的事情,那么:
View current = getCurrentFocus();
if (current != null) {
current.clearFocus();
}
如果使用 clearFocus()并不像您找到的那样工作,您可以:
<LinearLayout
android:id="@+id/my_layout"
android:focusable="true"
android:focusableInTouchMode="true" ...>
到最顶层的布局视图(线性布局)。要从所有Buttons / EditTexts等中删除焦点,您只需执行
即可LinearLayout myLayout = (LinearLayout) activity.findViewById(R.id.my_layout);
myLayout.requestFocus();
来自文档
当View清除焦点时,框架会尝试从顶部开始关注第一个可聚焦视图。因此,如果此视图是从顶部开始可以获得焦点的第一个视图,则将调用与清除焦点相关的所有回调,之后框架将关注此视图。
希望这有帮助。