2

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

在此处输入图像描述

但是抽屉指示器显示错误,在动作搜索视图展开时不显示后退箭头; 在此处输入图像描述

我希望它显示为 PlayStore 应用程序:

在此处输入图像描述

我该怎么做?提前致谢。

4

4 回答 4

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

之后使用本文档中所示的支持操作栏,然后您的抽屉指示器将正确显示,并在操作搜索视图展开时显示后退箭头。

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

您可以使用本指南设置支持库。

然后你的抽屉指示器将完美地看起来像这样..!!!

然后你的抽屉指示器将完美地看起来像这样。

于 2014-11-12T22:14:55.250 回答
1

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

于 2014-10-31T06:41:10.090 回答
0

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

于 2014-10-29T11:29:56.720 回答
0

对我来说,这里发布的解决方案都没有奏效。我不得不查看支持库的内部结构,以找出设置主页图标的原因和时间,但我注意到了一些事情。主要观察是在这个函数中设置了图标:

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

我只是添加了最后一行,它起作用了。

于 2015-10-20T14:42:33.897 回答