[英]How to change the default icon on the SearchView, to be use in the action bar on Android?
[英]How to change SearchView default icon?
我使用“ Android Action Bar Style Generator ”來生成我自己的 Holo 主題。 然后我在操作欄中添加了兩個圖標,一個用於搜索過濾器,一個用於文件選擇器,兩個圖標都是 white 。 文件選擇器圖標(右側)看起來不錯,但不知何故搜索圖標看起來是深灰色的。 在搜索文本視圖上鍵入時,關閉按鈕也呈深灰色。
我試過更改操作欄的顏色以及從搜索視圖中更改顏色,但沒有成功。 為什么搜索視圖顯示這種顏色? 我怎樣才能改變它?
非常感謝你。
更新:我以為我的應用程序正在使用我的圖標,但它沒有使用默認搜索視圖圖標,所以我的問題實際上是,如何更改搜索視圖的默認圖標? menu.xml 文件中的這句話不起作用:
android:icon="@drawable/selectable_header_search"
不幸的是,沒有簡單的方法可以將SearchView
圖標更改為自定義可繪制對象,因為主題屬性searchViewSearchIcon
不是公開的。 有關詳細信息,請參閱此答案。
但是,我認為您的問題是由錯誤的主題繼承引起的。 請使用android:Theme.Holo.Light.DarkActionBar
作為主題的基礎。 然后操作欄上的默認圖標應該具有淺色。
<style name="AppTheme" parent="android:Theme.Holo.Light.DarkActionBar">
...
</style>
由於 searchViewSearchIcon 屬性不是公開的,您可以使用以下代碼更改圖標:
int searchIconId = searchView.getContext().getResources().getIdentifier("android:id/search_button",null, null);
ImageView searchIcon = (ImageView) searchView.findViewById(searchIconId);
searchIcon.setImageResource(R.drawable........);
嘗試在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);
我發現更改操作欄中默認搜索視圖圖標的最簡單方法是在您的 onPrepareOptionsMenu 中。 你可以在這里看到我對類似問題的回答!
在您的主題風格中包括:
<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
對於像我這樣希望找到真正更改圖標的方法的人,您可以將其與操作欄夏洛克一起使用:
// 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
方式更改默認值,因為與其相關的字段已設置為私有。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.