簡體   English   中英

如何更改 SearchView 默認圖標?

[英]How to change SearchView default icon?

我使用“ Android Action Bar Style Generator ”來生成我自己的 Holo 主題。 然后我在操作欄中添加了兩個圖標,一個用於搜索過濾器,一個用於文件選擇器,兩個圖標都是 white 文件選擇器圖標(右側)看起來不錯,但不知何故搜索圖標看起來是深灰色的。 在搜索文本視圖上鍵入時,關閉按鈕也呈深灰色。

我試過更改操作欄的顏色以及從搜索視圖中更改顏色,但沒有成功。 為什么搜索視圖顯示這種顏色? 我怎樣才能改變它?

ActionBar 有兩個動作

非常感謝你。

更新:我以為我的應用程序正在使用我的圖標,但它沒有使用默認搜索視圖圖標,所以我的問題實際上是,如何更改搜索視圖的默認圖標? 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM