Android 如何定制;“向上”;展开searchView时的按钮? 背景

Android 如何定制;“向上”;展开searchView时的按钮? 背景,android,android-5.0-lollipop,searchview,up-button,Android,Android 5.0 Lollipop,Searchview,Up Button,能够使用ActionBar上的SearchView搜索项目(即其他应用程序) 该应用程序使用谷歌的支持库,在API 9的所有Android版本上都能正常运行 问题 在棒棒糖上,当我单击搜索操作项以开始搜索时,我注意到左上角的“上/下”按钮变为白色,这对这种情况不好,因为操作栏的背景也是白色的: 奇怪的是,这种情况并不总是发生,而且我不认为它发生在不是棒棒糖的Android版本上(在多个模拟器和设备上测试) 另一件奇怪的事情是,导航抽屉图标看起来不错,搜索视图中的X图标也不错 以下是我拥有的工具

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

该应用程序使用谷歌的支持库,在API 9的所有Android版本上都能正常运行

问题 在棒棒糖上,当我单击搜索操作项以开始搜索时,我注意到左上角的“上/下”按钮变为白色,这对这种情况不好,因为操作栏的背景也是白色的:

奇怪的是,这种情况并不总是发生,而且我不认为它发生在不是棒棒糖的Android版本上(在多个模拟器和设备上测试)

另一件奇怪的事情是,导航抽屉图标看起来不错,搜索视图中的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版本上正常工作

如何解决此问题

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

第1部分:
活动中调用以下方法。onCreate(Bundle)

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

<item name="android:colorControlNormal" tools:ignore="NewApi">?attr/colorControlNormal</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>

@颜色/材质\u白色\u 100
@颜色/材质\u白色\u 70
@颜色/材质\u黑色\u 54
?属性/颜色控制正常

这似乎是一个已知的问题:

解决方法如下:,意思是:

values-21/themes.xml:

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

@可抽出式/abc集成电路ab背面mtrl am阿尔法
就这样。希望以后能修好

为了定制它,我假设我可以使用它,也可以使用“colorControlNormal”来选择颜色。我猜“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" />


你是否尝试过将
android:theme=“@android:style/ThemeOverlay.Material.Light.ActionBar”
添加到你的
工具栏中?@ianhanniballake它不存在,所以现在我尝试了这个:android:theme=“@style/Widget.AppCompat.Light.ActionBar”,但它也没有做任何事情……但我没有使用“colorControlNormal”。我使用了支持库提供的…@androiddeveloper审阅并应用我添加的代码。这就是我所用的,而且很有效。一旦你加入颜色,它就会很好用。我找到了一个更简单的解决方案,并发布了一个答案。这很简单:D谢谢。@EugenPechanec是的,很抱歉做了一个比你的短的…:)我如何使用普通的,只有正确的颜色?我不认为有可能访问的标准系统向上/向后绘制的这一点。我建议您只需使用自定义绘图工具手动设置导航图标和拼贴图标,您也可以自己着色等。
<style name="MyTheme" parent="Theme.AppCompat">
    <item name="homeAsUpIndicator">@drawable/abc_ic_ab_back_mtrl_am_alpha</item>
</style>
<android.support.v7.widget.Toolbar
         android:id="@+id/toolbar"
         android:layout_width="match_parent"
         android:layout_height="@dimen/toolbarHeight"
         app:collapseIcon="@drawable/collapseBackIcon" />