我的应用程序使用ActionBarCompat
库以及NavigationDrawer
支持库。我使用ActionBarDrawerToggle
appcompat v7 来获取抽屉。上有一个自定义搜索视图ActionBar
。像这样:
但是抽屉指示器显示错误,在动作搜索视图展开时不显示后退箭头;
我希望它显示为 PlayStore 应用程序:
我该怎么做?提前致谢。
我的应用程序使用ActionBarCompat
库以及NavigationDrawer
支持库。我使用ActionBarDrawerToggle
appcompat v7 来获取抽屉。上有一个自定义搜索视图ActionBar
。像这样:
但是抽屉指示器显示错误,在动作搜索视图展开时不显示后退箭头;
我希望它显示为 PlayStore 应用程序:
我该怎么做?提前致谢。
对此有简单快捷的解决方案。
首先,您现在应该知道 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);
之后使用本文档中所示的支持操作栏,然后您的抽屉指示器将正确显示,并在操作搜索视图展开时显示后退箭头。
记得使用 com.android.support:appcompat-v7:21.0.+" (Api 级别 21)和 android.support.v7.app.ActionBar
您可以使用本指南设置支持库。
然后你的抽屉指示器将完美地看起来像这样..!!!
你遇到了这个问题,因为你设置(android:)homeAsUpIndicator
了你的主题。删除该属性将解决您的问题。
这不是来自 的箭头ActionBarDrawerToggle
。我认为谷歌使用Toolbar
他们在谷歌 io 应用程序中的做法。在 OnClick 事件中,他们只是将工具栏导航图标更改为toolbar.setNavigationIcon(R.id.ic_up)
. 并且R.id.ic_up
- 是一个可绘制的自定义箭头。
对我来说,这里发布的解决方案都没有奏效。我不得不查看支持库的内部结构,以找出设置主页图标的原因和时间,但我注意到了一些事情。主要观察是在这个函数中设置了图标:
android.support.v7.widget.Toolbar#setNavigationIcon(android.graphics.drawable.Drawable)
在线上
mNavButtonView.setImageDrawable(icon);
如果您遇到与我相同的问题并且建议的解决方案都不起作用(设置主题,尝试在工具栏上调用 setNavigationIcon,在操作栏上调用 setHomeAsUpIndicator 甚至其他东西),我建议找到上面提到的函数并在那里放置断点。然后,您可以查看何时调用该函数并识别设置图标的最后一个函数调用(来自 android studio 中的 Frame 窗口)。对我来说,这是同步导航抽屉的活动生命周期方法:
@Override
protected void onPostCreate(Bundle savedInstanceState) {
super.onPostCreate(savedInstanceState);
mDrawerToggle.syncState();
mToolbar.setNavigationIcon(R.drawable.ic_hamburger);
}
我只是添加了最后一行,它起作用了。