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

时间:2015-02-22 03:42:28

标签: android android-actionbar navigation-drawer

我一直致力于升级Android API 21的应用程序,并且已经开始使用支持库v7。但是,由于这些更改,导航抽屉指示器(汉堡菜单按钮)不再显示。

以前是在ActionBarDrawerToggle()方法中设置了指示符图标,但在支持lib v7中不再是这种情况。

另一个版本的ActionBarDrawerToggle()采用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);

2 个答案:

答案 0 :(得分:0)

这里只是一个黑暗的镜头,但它可能是一个与主题相关的问题。

您的应用主题是否包含以下内容?

<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>

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

答案 1 :(得分:-1)

是的,您必须使用工具栏

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