有导航抽屉工作与夏洛克的动作栏,但我有麻烦得到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);
}
};
您是否尝试过实现以下方法:
mDrawerToggle.syncState();
这个解决方案为我工作,并显示默认的导航抽屉图标在所有版本。从这里添加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);
你可以创建如下样式:
<style name="AppTheme" parent="Your Theme name">
<item name="homeAsUpIndicator">@drawable/ic_drawer</item>
</style>
在Android manifest中应用如下主题:
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
</application>
这将解决获得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完成之后设置,而不是在此之前。
你可以先看看这个帖子。有一个答案:"你可以在主题
中更改后退图标。" <item name="android:homeAsUpIndicator">@drawable/action_arrow</item>
但是我认为你想要实现导航抽屉,所以阅读它
你把开关加到抽屉里了吗?
mDrawerLayout.setDrawerListener(mDrawerToggle);
当你在Android上运行应用程序时会发生这种情况<3、甚至谷歌的应用程序也有这个问题。
但有一个项目比解决这个:https://github.com/nicolasjafelle/SherlockNavigationDrawer
我把这个放进去,它就工作了。
@Override
protected void onPostCreate(Bundle savedInstanceState) {
super.onPostCreate(savedInstanceState);
// Sync the toggle state after onRestoreInstanceState has occurred.
mDrawerToggle.syncState();
}
@zudo1337的方法解决了我的问题。
@Override
protected void onPostCreate(Bundle savedInstanceState) {
super.onPostCreate(savedInstanceState);
// Sync the toggle state after onRestoreInstanceState has occurred.
mDrawerToggle.syncState();
}
我在调用setDrawerListener之前添加了这一行。
mDrawerLayout.post(new Runnable() {
@Override public void run() {
mDrawerToggle.syncState();
}
});
这可能会起作用…
在onCreateOptionMenu膨胀你的菜单布局getSupportMenuInflater () .inflate (R.menu。action_bar_menu,菜单);