12

背景

我的应用程序能够使用 ActionBar 上的 SearchView 搜索项目(即其他应用程序)。

该应用程序使用 Google 的支持库,并且适用于 API 9 的所有 Android 版本。

问题

在 Lollipop 上,当我单击搜索操作项以开始搜索时,我注意到左上角的上/后退按钮变为白色,这对这种情况很不利,因为操作栏背景也很白:

在此处输入图像描述

奇怪的是它并不总是发生,而且我认为它不会发生在不是 Lollipop 的 Android 版本上(在多个模拟器和设备上测试)。

另一个奇怪的是,导航抽屉图标似乎没问题,以及 searchView 内的 X 图标。

这是我拥有的工具栏的 XML:

<android.support.v7.widget.Toolbar
    android:id="@+id/activity_app_list__toolbar"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="?attr/colorPrimary"
    android:minHeight="?attr/actionBarSize" />

“colorPrimary”设置为:#ffEFEFEF。

此外,活动的主题的父级是 "Theme.AppCompat.Light.NoActionBar" ,因为我已将工具栏设置为 actionBar。

问题

我该如何解决这个问题?

这个问题的原因是什么?为什么它在其他 Android 版本上运行良好?

4

3 回答 3

17

这似乎是一个已知问题:https ://code.google.com/p/android/issues/detail?id=78346 。

解决方法在这里:https://code.google.com/p/android/issues/detail?id=78346#c5,意思是:

值 21/themes.xml:

<style name="MyTheme" parent="Theme.AppCompat">
    <item name="homeAsUpIndicator">@drawable/abc_ic_ab_back_mtrl_am_alpha</item>
</style>

而已。希望以后能修好。

为了自定义它,我假设我可以使用它,并使用“colorControlNormal”选择颜色

于 2014-12-08T19:04:24.880 回答
9

我猜“app:collapseIcon”属性是你要找的?

<android.support.v7.widget.Toolbar
         android:id="@+id/toolbar"
         android:layout_width="match_parent"
         android:layout_height="@dimen/toolbarHeight"
         app:collapseIcon="@drawable/collapseBackIcon" />
于 2016-02-18T13:11:51.320 回答
1

我该如何解决这个问题?

我为这个(和其他)问题创建了一个实用程序类。在这里获取:

https://gist.github.com/consp1racy/96958a1dedf5a99d4ca5

第 1 部分:在您的 中调用以下方法Activity.onCreate(Bundle)

ToolbarUtils.fixToolbar(mToolbar);

第 2 部分:代码使用android:colorControlNormal您在布局中指定的工具栏“主题”中的值。如果您使用支持库并仅定义colorControlNormal,则需要在其后添加以下行:

<item name="android:colorControlNormal" tools:ignore="NewApi">?attr/colorControlNormal</item>

这个问题的原因是什么?

经过大量的思考和实验,似乎箭头使用了原始位图,它是白色的,没有任何着色,这是错误的。

注意:菜单溢出图标也会显示,android:colorControlNormal所以现在它也会显示正确的颜色。

编辑:先决条件:

Toolbar应该具有类似于以下的属性

<!-- custom toolbar theme -->
<item name="theme">@style/ThemeOverlay.MyApp.ActionBar</item>
<!-- light popup menu theme, change this if you need to -->
<item name="popupTheme">@style/ThemeOverlay.AppCompat.Light</item>
<!-- app bar background color -->
<item name="android:background">@color/material_deep_orange_500</item>

然后工具栏主题应该看起来像这样

<!-- example uses dark app bar template, feel free to change it to light if you need to -->
<style name="ThemeOverlay.MyApp.ActionBar" parent="ThemeOverlay.AppCompat.Dark.ActionBar">
    <!-- this line defines title text color -->
    <item name="android:textColorPrimary">@color/material_white_100</item>
    <!-- this line defines subtitle text color -->
    <item name="android:textColorSecondary">@color/material_white_70</item>
    <!-- this line defines up/hamburger/overflow icons color -->
    <item name="colorControlNormal">@color/material_black_54</item>
    <!-- this line is necessary for proper coloring on lollipop - do not delete it -->
    <item name="android:colorControlNormal" tools:ignore="NewApi">?attr/colorControlNormal</item>
</style>
于 2014-12-08T00:30:35.773 回答