导航抽屉图标未显示(夏洛克操作栏)



有导航抽屉工作与夏洛克的动作栏,但我有麻烦得到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,菜单);

最新更新