让导航抽屉与sherlock操作栏配合使用,但我无法显示3行图标(如gmail),而不是正常的向上按钮“<”。这是我的代码ic_drawer是gmail使用的3行图标
getSupportActionBar().setIcon(R.drawable.myIcon);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setDisplayShowTitleEnabled(true);
mDrawerToggle = new ActionBarDrawerToggle(this, mDrawer,
R.drawable.ic_drawer, R.string.menu_open, R.string.menu_close) {
public void onDrawerClosed(View view) {
super.onDrawerClosed(view);
}
public void onDrawerOpened(View drawerView) {
super.onDrawerOpened(drawerView);
}
};
答案 0 :(得分:40)
您是否尝试过实施该方法:
mDrawerToggle.syncState();
过去这对我有用。
答案 1 :(得分:21)
此解决方案适用于我,并在所有版本中显示默认导航抽屉图标。
将SherlockNavigationDrawer
库从此处https://github.com/nicolasjafelle/SherlockNavigationDrawer添加到您的项目中。
并按以下方式更改您的代码:
SherlockActionBarDrawerToggle mDrawerToggle = new SherlockActionBarDrawerToggle(this,mDrawerLayout,
R.drawable.ic_drawer, R.string.drawer_open, R.string.drawer_close) {
public void onDrawerClosed(View view) {
super.onDrawerClosed(view);
}
public void onDrawerOpened(View drawerView) {
super.onDrawerOpened(drawerView);
}
};
mDrawerLayout.setDrawerListener(mDrawerToggle);
getSupportActionBar().setIcon(R.drawable.ic_launcher);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setDisplayShowTitleEnabled(true);
答案 2 :(得分:3)
虽然我现在猜测你一定已经解决了,只是想提交答案:
将您的代码更改为以下内容:
mDrawerToggle = new ActionBarDrawerToggle(this, mDrawer,
R.drawable.ic_drawer, R.string.menu_open, R.string.menu_close) {
public void onDrawerClosed(View view) {
super.onDrawerClosed(view);
}
public void onDrawerOpened(View drawerView) {
super.onDrawerOpened(drawerView);
}
};
mDrawerLayout.setDrawerListener(mDrawerToggle);
getSupportActionBar().setIcon(R.drawable.myIcon);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setDisplayShowTitleEnabled(true);
基本上,您在代码中设置的ActionBar选项需要在DrawerToggle完成之后设置,而不是之前。
答案 3 :(得分:2)
您可以先查看this帖子。有一个答案:“你可以改变主题中的图标
<item name="android:homeAsUpIndicator">@drawable/action_arrow</item>
但我认为你想要实现Navigation Drawer,所以请阅读它。
答案 4 :(得分:2)
你可以做的是创建如下的风格:
<style name="AppTheme" parent="Your Theme name">
<item name="homeAsUpIndicator">@drawable/ic_drawer</item>
</style>
在Android清单中应用此主题,如:
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
</application>
这将解决获得3行图标的问题。
答案 5 :(得分:1)
您是否将切换添加到抽屉?
mDrawerLayout.setDrawerListener(mDrawerToggle);
答案 6 :(得分:0)
当您在Android中运行应用时会发生这种情况&lt; 3,即使谷歌应用程序也受此影响。
但有一个项目比解决这个问题: https://github.com/nicolasjafelle/SherlockNavigationDrawer
答案 7 :(得分:0)
我把它放入其中并且有效。
@Override
protected void onPostCreate(Bundle savedInstanceState) {
super.onPostCreate(savedInstanceState);
// Sync the toggle state after onRestoreInstanceState has occurred.
mDrawerToggle.syncState();
}
答案 8 :(得分:0)
@ zudo1337的方法解决了我的问题。
@Override
protected void onPostCreate(Bundle savedInstanceState) {
super.onPostCreate(savedInstanceState);
// Sync the toggle state after onRestoreInstanceState has occurred.
mDrawerToggle.syncState();
}
答案 9 :(得分:0)
我在调用setDrawerListener之前添加了这一行。
mDrawerLayout.post(new Runnable() {
@Override public void run() {
mDrawerToggle.syncState();
}
});
希望这可以解决较低设备中的问题。
答案 10 :(得分:-2)
可能会有效......
onCreateOptionMenu中的会夸大您的菜单布局 getSupportMenuInflater()。inflate(R.menu.action_bar_menu,menu);