以下代码为Navigation Drawer
,我的应用中有toolbar
:
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(false);
getSupportActionBar().setHomeButtonEnabled(true);
drawerToggle = new ActionBarDrawerToggle(this, drawerLayout, toolbar, R.string.empty, R.string.empty) {
@Override
public void onDrawerOpened(View drawerView) {
super.onDrawerOpened(drawerView);
invalidateOptionsMenu();
}
@Override
public void onDrawerClosed(View drawerView) {
super.onDrawerClosed(drawerView);
invalidateOptionsMenu();
}
};
drawerLayout.setDrawerListener(drawerToggle); // Drawer Listener set to the Drawer toggle
drawerToggle.syncState();
@Override
protected void onPostCreate(Bundle savedInstanceState) {
super.onPostCreate(savedInstanceState);
drawerToggle.syncState();
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
drawerToggle.onConfigurationChanged(newConfig);
}
main_activity.xml
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/drawerLayout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<include layout="@layout/toolbar" />
</LinearLayout>
<ListView
android:id="@+id/lvMenu"
android:background="@color/black"
android:layout_width="310dp"
android:layout_height="match_parent"
android:layout_gravity="left"/>
</android.support.v4.widget.DrawerLayout>
菜单可以正确显示,但菜单打开时,菜单图标会消失,如下图所示:
这是正常状态:
有什么想法吗?
答案 0 :(得分:1)
以下代码适用于我:
drawerLayout.setDrawerListener(drawerToggle); // Drawer Listener set to the Drawer toggle
drawerLayout.post(new Runnable() {
@Override
public void run() {
// To display hamburger icon in toolbar
drawerToggle.syncState();
}
});
您需要将drawerToggle.syncState();
放在Runnable()
内,并且只需在代码中添加drawerToggle.syncState();
一次。
希望这有帮助。