导航抽屉图标未显示(Sherlock操作栏)

时间:2013-06-10 18:53:44

标签: android

让导航抽屉与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);
        }
    };

11 个答案:

答案 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);