使用支持库 v7 带回导航抽屉指示器

Bring back the Navigation Drawer Indicator with support library v7

我一直在为 Android API 21 升级我的应用程序,并且它主要与支持库 v7 一起工作。但是,由于这些更改,导航抽屉指示器(汉堡菜单按钮)不再显示。

以前是在ActionBarDrawerToggle()方法中设置指示器图标,现在support lib v7不再这样了。

还有另一个版本的 ActionBarDrawerToggle() 接受 ToolBar 对象。除了我的 Actionbar 之外,我还必须有一个 Toolbar 才能恢复抽屉指示器吗?

还有什么方法可以解决这个问题?

这是我的操作条代码。

    getSupportActionBar().setDisplayHomeAsUpEnabled(false);
    getSupportActionBar().setHomeButtonEnabled(true);
    getSupportActionBar().setDisplayShowHomeEnabled(true);


    // ActionBarDrawerToggle ties together the the proper interactions
    // between the sliding drawer and the action bar app icon
    mDrawerToggle = new ActionBarDrawerToggle(
            this,                  /* host Activity */
            mDrawerLayout,         /* DrawerLayout object */
           // R.drawable.ic_drawer,  /* nav drawer image to replace 'Up' caret */
            R.string.drawer_open,  /* "open drawer" description for accessibility */
            R.string.drawer_close  /* "close drawer" description for accessibility */
    ) {
        public void onDrawerClosed(View view) {
            getSupportActionBar().setTitle(mTitle);
            invalidateOptionsMenu(); // creates call to onPrepareOptionsMenu()
        }

        public void onDrawerOpened(View drawerView) {
            getSupportActionBar().setTitle(mDrawerTitle);
            invalidateOptionsMenu(); // creates call to onPrepareOptionsMenu()
        }
    };

    mDrawerToggle.setDrawerIndicatorEnabled(true);

    mDrawerLayout.setDrawerListener(mDrawerToggle);

是的,你必须使用工具栏

mToolbar = (Toolbar) findViewById(R.id.toolbar_actionbar);
 setSupportActionBar(mToolbar); getSupportActionBar().setDisplayShowHomeEnabled(true);
 mNavigationDrawerFragment = (NavigationDrawerFragment) getFragmentManager().findFragmentById(R.id.fragment_drawer);
 mNavigationDrawerFragment.setup(R.id.fragment_drawer, (DrawerLayout) findViewById(R.id.drawer), mToolbar); 

这里只是瞎猜,但可能是主题相关的问题。

您的应用主题是否有以下项目?

<style name="YourAppStyleName" parent="Theme.AppCompat.Light.DarkActionBar">
    <!-- Other items ommited -->
    <item name="drawerArrowStyle">@style/YourAppStyleName.DrawerArrowToggle</item>
</style>

<style name="YourAppStyleName.DrawerArrowToggle" parent="Widget.AppCompat.DrawerArrowToggle">
    <item name="spinBars">true</item>
    <item name="color">@android:color/white</item>
</style>

这还提供了一个好看的动画箭头。