在导航抽屉显示三行

时间:2015-02-11 08:52:45

标签: android navigation-drawer

我最近更新了我的应用程序,在2个活动中使用导航抽屉(而不是像过去那样只使用一个)。为此,制作了一个DrawerActivity父类,并将这个类扩展到我想要使用它的两个活动上。问题是,它不是显示三行符号,而是显示后箭头符号。以前,当我只在主要活动中使用导航抽屉时,它显示为应该(使用三条线),如下所示:

http://s17.postimg.org/y66pxf50v/JEk_FM.png

这是我用于此的代码:

drawerListener = new ActionBarDrawerToggle(this, drawerLayout,
            R.drawable.ic_navigation_drawer, R.string.navigation_drawer_open,
            R.string.navigation_drawer_close) {
        @Override
        public void onDrawerClosed(View drawerView) {
            super.onDrawerClosed(drawerView);
        }

        @Override
        public void onDrawerOpened(View drawerView) {
            super.onDrawerOpened(drawerView);
        }

        @Override
        public void onDrawerSlide(View drawerView, float slideOffset) {
        }
    }
    getActionBar().setHomeButtonEnabled(true);
    getActionBar().setDisplayHomeAsUpEnabled(true);

为什么它会显示后退按钮而不是三条线?谢谢。

4 个答案:

答案 0 :(得分:3)

好吧,经过长时间的“战斗”之后,我终于意识到问题所在。它似乎与问题中发布的代码无关,活动缺少使用syncState()函数的onPostCreate()方法:

@Override
protected void onPostCreate(Bundle savedInstanceState) {
    super.onPostCreate(savedInstanceState);
    drawerListener.syncState();
}

感谢大家的支持,并希望这有助于其他人避免忘记syncState()函数。

答案 1 :(得分:0)

尝试将代码更改为:

    // enabling action bar app icon and behaving it as toggle button.
    // call these codes before calling "setDrawerListener(drawerListener)"
    getActionBar().setDisplayHomeAsUpEnabled(true);
    getActionBar().setHomeButtonEnabled(true);

    // set up the drawerListener
    drawerListener = new ActionBarDrawerToggle(this, mDrawerLayout,
            R.drawable.ic_drawer, //nav menu toggle icon
            R.string.app_name, // nav drawer open - description for accessibility
            R.string.app_name // nav drawer close - description for accessibility
    ) {
        public void onDrawerClosed(View view) {
            // calling onPrepareOptionsMenu() to show action bar icons
            invalidateOptionsMenu();
        }

        public void onDrawerOpened(View drawerView) {
            // calling onPrepareOptionsMenu() to hide action bar icons
            invalidateOptionsMenu();
        }
    };
    mDrawerLayout.setDrawerListener(drawerListener);

R.drawable.ic_drawerdrawable资源文件夹中显示三行图标的图标。下载ic_drawer here并将其导入您的项目。

答案 2 :(得分:0)

在我的情况下,删除行{{1}},然后再用三行替换后面的箭头。

setDrawerIndicatorEnabled默认为true 。错误地,我把它弄错了。

答案 3 :(得分:0)

只需添加此

@Override
protected void onPostCreate(Bundle savedInstanceState) {
    super.onPostCreate(savedInstanceState);
    new ActionBarDrawerToggle(this, (DrawerLayout) findViewById(R.id.drawer_layout),
            (Toolbar) findViewById(R.id.toolbar), R.string.navigation_drawer_open,
            R.string.navigation_drawer_close) {}.syncState();
}