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