【问题标题】:To close the Navigation Drawer on touch of screen在触摸屏上关闭导航抽屉
【发布时间】:2015-09-17 12:02:53
【问题描述】:
我是这个 Android 的新手。在这里,当我单击时,我遇到了一个问题
在导航抽屉项目上,然后它提供其他项目,然后在触摸屏幕上导航抽屉关闭,但后退按钮仍然存在。
我把 mDrawerLayout.ontouchlistener 它确实有效,但我希望该图标回到点击屏幕上。我不想要返回按钮
当我点击导航抽屉内的类别项目时:
然后我在 ExpandableListView 中放了另一个具有不同 ArrayList 的适配器:
但是当我触摸屏幕时,它会关闭导航抽屉,但后退图标仍然存在:
【问题讨论】:
标签:
android
android-layout
android-activity
navigation-drawer
【解决方案1】:
设置
getSupportActionBar().setDisplayHomeAsUpEnabled(false);
getSupportActionBar().setHomeButtonEnabled(false);
在您的活动中。
【解决方案2】:
我检查了 developers.android.com。他们给出了一个小解决方案。希望这行得通。
private ActionBarDrawerToggle mDrawerToggle;
...
private DrawerLayout mDrawerLayout;
public void onCreate(Bundle savedInstanceState) {
...
mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
mDrawerToggle = new ActionBarDrawerToggle(
this, /* host Activity */
mDrawerLayout, /* DrawerLayout object */
R.drawable.ic_drawer, /* nav drawer icon to replace 'Up' caret */
R.string.drawer_open, /* "open drawer" description */
R.string.drawer_close /* "close drawer" description */
) {
/** Called when a drawer has settled in a completely closed state. */
public void onDrawerClosed(View view) {
super.onDrawerClosed(view);
getActionBar().setTitle(mTitle);
}
/** Called when a drawer has settled in a completely open state. */
public void onDrawerOpened(View drawerView) {
super.onDrawerOpened(drawerView);
getActionBar().setTitle(mDrawerTitle);
}
};
// Set the drawer toggle as the DrawerListener
mDrawerLayout.setDrawerListener(mDrawerToggle);
getActionBar().setDisplayHomeAsUpEnabled(true);
getActionBar().setHomeButtonEnabled(true);
}
@Override
protected void onPostCreate(Bundle savedInstanceState) {
super.onPostCreate(savedInstanceState);
// Sync the toggle state after onRestoreInstanceState has occurred.
mDrawerToggle.syncState();
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
mDrawerToggle.onConfigurationChanged(newConfig);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Pass the event to ActionBarDrawerToggle, if it returns
// true, then it has handled the app icon touch event
if (mDrawerToggle.onOptionsItemSelected(item)) {
return true;
}
// Handle your other action bar items...
return super.onOptionsItemSelected(item);
}
...
}