Jok*_*kin 5 android focus navigation-drawer
在具有导航抽屉的 android 活动中清除焦点的最佳方法是什么。
问题在于,当用户选择了一个文本框时,如果您打开导航抽屉,则后退事件不会被抽屉消耗,并且导航会后退一步,让抽屉保持打开状态。
现在我解决了在活动中使用它的问题,但我想知道是否有人使用另一种解决方案,我不需要使用 ActionBarDrawerToggle 事件。
/** Called when a drawer has settled in a completely open state. */
public void onDrawerOpened(View drawerView) {
View window = findViewById(R.id.content_frame);
window.clearFocus();
}
Run Code Online (Sandbox Code Playgroud)
实际上,抽屉在打开时似乎没有焦点,因此onKeyUp不会被调用。我在主机活动中检查了这个,onBackPressed DrawerLayout#hasFocus()如果活动有一个获得焦点的视图 - 一个 EditText 或其他东西,则返回 false 。
我什至试图弄乱它的descendantFocusability属性,但没有用。我设法用与您类似的方法解决了这个问题:抽屉布局正在请求焦点:
mDrawerLayout.setDrawerListener(new DrawerLayout.SimpleDrawerListener() {
@Override
public void onDrawerOpened(View drawerView) {
mDrawerLayout.requestFocus();
}
});
Run Code Online (Sandbox Code Playgroud)
您正在清除内容 ViewGroup 的焦点,但我不确定谁会获得焦点,很可能没有视图。
老实说,这在我看来是 DrawerLayout 中的一个错误,好像它被打开了,它应该获得焦点。