我使用“Android Action Bar Style Generator”来生成我自己的Holo主题。 然后我在操作栏中添加了两个图标,一个用于searchFilter,另一个用于文件选择器,两个图标都是白色。文件选择器图标(在右侧)看起来不错,但不知何故搜索图标看起来是深灰色。在搜索文本视图中键入时,关闭按钮也显示为深灰色。
我尝试过更改操作栏的颜色以及搜索视图,但没有成功。为什么搜索视图显示此颜色?我怎样才能改变它?
非常感谢。
更新:我认为我的应用程序正在使用我的图标,但它没有,它使用默认的搜索视图图标,所以我的问题实际上是,如何更改默认图标搜索视图? menu.xml文件中的这句话不起作用:
android:icon="@drawable/selectable_header_search"
答案 0 :(得分:18)
很遗憾,没有简单的方法可以将SearchView
图标更改为自定义drawable,因为主题属性searchViewSearchIcon
不公开。有关详细信息,请参阅this答案。
但是,我认为你的问题是由错误的主题继承引起的。请使用android:Theme.Holo.Light.DarkActionBar
作为主题的基础。然后,操作栏上的默认图标应为浅色。
<style name="AppTheme" parent="android:Theme.Holo.Light.DarkActionBar">
...
</style>
答案 1 :(得分:10)
由于searchViewSearchIcon属性不公开,您可以使用以下代码更改图标:
int searchIconId = searchView.getContext().getResources().getIdentifier("android:id/search_button",null, null);
ImageView searchIcon = (ImageView) searchView.findViewById(searchIconId);
searchIcon.setImageResource(R.drawable........);
答案 2 :(得分:6)
尝试在 showAsAction 中设置此选项:* MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW *
如果没有此选项,SearchView就不会拍摄您为操作设置按钮的图标。
menu.add("Search")
.setIcon(
getResources().getDrawable(
R.drawable.selectable_header_search))
.setActionView(searchView)
.setShowAsAction(
MenuItem.SHOW_AS_ACTION_ALWAYS
| MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW
| MenuItem.SHOW_AS_ACTION_WITH_TEXT);
答案 3 :(得分:0)
我发现更改操作栏中默认搜索结果图标的最简单方法是在onPrepareOptionsMenu中。您可以在类似的问题中看到我的回答here!
答案 4 :(得分:0)
在您的主题样式中包括:
<style name="YourTheme.Toolbar">
<item name="searchViewStyle">@style/YourActionBarSearch</item>
<item name="editTextColor">@color/your_ab_text_color</item>
<item name="android:textColorHint">@color/your_ab_hint_color</item>
</style>
您现在可以使用searchViewStyle
定义SearchView的样式,editTextColor
将在搜索框中设置文本的颜色。通过设置android:textColorHint
,您还可以设置提示的颜色,例如“搜索...”。
<style name="YourActionBarSearch" parent="@style/Widget.Holo.SearchView">
<item name="searchIcon">@drawable/ic_ab_search</item>
<item name="queryBackground">@null</item>
<item name="submitBackground">@null</item>
<item name="searchHintIcon">@drawable/ic_ab_small_search</item>
<item name="defaultQueryHint">@string/toolbar_search_hint</item>
<item name="closeIcon">@drawable/ic_ab_small_search_close</item>
</style>
这将根据您的喜好设定搜索视图的样式,或多或少。字段searchIcon
是操作栏中的图标。字段searchHintIcon
是搜索字段中提示左侧的小图标。字段closeIcon
是搜索字段右侧的关闭图标。
检查一下,了解更多样式设置:
$ANDROID_SDK/platforms/android-24/data/res/values/styles_holo.xml
答案 5 :(得分:-2)
对于像我这样的人希望找到真正改变图标的方法,你可以在动作栏sherlock中使用它:
// Getting the 'search_icon'
ImageView searchIcon = (ImageView)searchView.findViewById(R.id.abs__search_button);
// Setting background of 'search_plate' to earlier defined drawable.
searchIcon.setImageResource(R.drawable.search_button_selector);
您无法使用常用方式android:icon
更改默认方式,因为与其相关的字段已设置为私有。