ActionBar compat v7 21上的抽屉指示器

时间:2014-10-29 10:58:30

标签: android android-actionbar android-actionbar-compat drawertoggle

我的应用程序使用ActionBarCompat库以及NavigationDrawer支持库。 我使用ActionBarDrawerToggle appcompat v7来获取抽屉。 ActionBar上有自定义搜索视图。像这样:

enter image description here

但是抽屉指示器显示错误,在展开动作搜索视图时不显示后退箭头; enter image description here

我希望它像PlayStore应用程序一样显示:

enter image description here

我该怎么办?提前谢谢。

4 个答案:

答案 0 :(得分:3)

可以简单快速地解决这个问题。

首先,您应该知道不推荐使用android.support.v4.app.ActionBarDrawerToggle。 您必须将其替换为android.support.v7.app.ActionBarDrawerToggle。

这是一个显示相同的例子。



DrawerLayout mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
    ActionBarDrawerToggle mDrawerToggle = new ActionBarDrawerToggle(
        this,  mDrawerLayout, mToolbar,
        R.string.navigation_drawer_open, R.string.navigation_drawer_close
    );
    mDrawerLayout.setDrawerListener(mDrawerToggle);




之后使用支持动作栏,如图所示here in this documentation,然后您的抽屉指示器将正确显示,同时显示动作搜索视图展开时的后退箭头。

请记住使用com.android.support:appcompat-v7:21.0.+" (Api等级21)  和android.support.v7.app.ActionBar

您可以使用此guide设置支持库。

然后你的抽屉指示器看起来就像这样...... !!!

AND then your drawer indicator will perfectly look like this.

答案 1 :(得分:1)

您遇到了这个问题,因为您在主题中设置了(android:)homeAsUpIndicator。删除该属性将解决您的问题。

答案 2 :(得分:0)

这不是ActionBarDrawerToggle的箭头。我认为Google使用Toolbar和谷歌io应用程序一样。在OnClick事件中,他们只需使用toolbar.setNavigationIcon(R.id.ic_up)更改工具栏导航图标。 R.id.ic_up - 是一个自定义箭头可绘制的。

答案 3 :(得分:0)

对我来说,这里发布的SO解决方案都没有。我不得不在支持库的引擎盖下查找为什么以及何时是主页图标集,我注意到了一些事情。主要观察是该功能设置了图标:

android.support.v7.widget.Toolbar#setNavigationIcon(android.graphics.drawable.Drawable)

就行了

 mNavButtonView.setImageDrawable(icon);

如果您遇到与我相同的问题并且没有建议的解决方案有效(设置主题,尝试在工具栏上调用setNavigationIcon,在Actionbar上调用setHomeAsUpIndicator,甚至是其他东西),我建议找到上面提到的函数并在那里放置断点。然后,您可以看到函数被调用的时间,并识别设置图标的最后一个函数调用(来自android studio中的Frame窗口)。对我来说,这是活动生命周期方法同步导航抽屉:

@Override
protected void onPostCreate(Bundle savedInstanceState) {
    super.onPostCreate(savedInstanceState);
    mDrawerToggle.syncState();
    mToolbar.setNavigationIcon(R.drawable.ic_hamburger);
}

我只是添加了最后一行并且它有效。