14

在我的應用程序中,我有一個顯示搜索建議的搜索視圖。我希望下拉/微調和文字是一種特定的顏色。目前,我已經能夠做出唯一的變化是通過以下輸入的文本的文本顏色:樣式安卓搜索視圖和下拉列表中的操作欄

<style name="MyApp.AutoCompleteTextView" parent="Widget.AppCompat.Light.AutoCompleteTextView"> 
    <item name="android:textColor">@color/white</item> 
    <item name="android:textCursorDrawable">@null</item> 
    <item name="android:background">@color/myBackgroundColor</item> 
    </style> 

該應用程序當前顯示的搜索查看結果是這樣的:

Here is how it currently looks

什麼我想知道是如何去改變像searchHint顏色,下拉背景和下拉項目文字顏色的部分?

我指定的API 19+

回答

9

所以很多搜索後,我能找到這個最接近的解決方案如下(感謝GZ95's answer!):

SearchView searchView = new SearchView(context); 
LinearLayout linearLayout1 = (LinearLayout) searchView.getChildAt(0); 
LinearLayout linearLayout2 = (LinearLayout) linearLayout1.getChildAt(2); 
LinearLayout linearLayout3 = (LinearLayout) linearLayout2.getChildAt(1); 
AutoCompleteTextView autoComplete = (AutoCompleteTextView) linearLayout3.getChildAt(0); 
//Set the input text color 
autoComplete.setTextColor(Color.WHITE); 
// set the hint text color 
autoComplete.setHintTextColor(Color.WHITE); 
//Some drawable (e.g. from xml) 
autoComplete.setDropDownBackgroundResource(R.drawable.drop_down_bg); 

它不是最優雅,但它已爲我工作。我唯一遇到的問題是如何更改建議的項目文本顏色。歡迎我聽到更多的最優解這個問題

+2

jedikv在這裏嘗試一個清潔劑soution:'SearchView.SearchAutoComplete autoComplete =(SearchView.SearchAutoComplete)searchView.findViewById(R.id.search_src_text); autoComplete.setDropDownBackgroundResource(R.drawable.drop_down_bg);' – darkangelo

+0

這是唯一對我有用的解決方案。謝謝 – Nico

1

你可以在定義的themes.xml suggestionRowLayout:

<resources> 
<style name="AppTheme" parent="AppTheme.Base"> 
    <item name="searchViewStyle">@style/AppTheme.SearchView</item> 
</style> 

<style name="AppTheme.Base" parent="Theme.AppCompat.Light.NoActionBar"> 
    <item name="colorPrimary">@color/bluegrey_500</item> 
    <item name="colorPrimaryDark">@color/bluegrey_900</item> 
    <item name="colorAccent">@color/teal_500</item> 
    <item name="android:windowNoTitle">true</item> 
    <item name="windowActionBar">false</item> 
</style> 

<style name="AppTheme.SearchView" parent="Widget.AppCompat.SearchView"> 
    <!-- The layout for the search view. Be careful. --> 
    <!--<item name="layout">...</item>--> 
    <!-- Background for the search query section (e.g. EditText) --> 
    <!--<item name="queryBackground">@color/bluegrey_400</item>--> 
    <!-- Background for the actions section (e.g. voice, submit) --> 
    <!--<item name="submitBackground">...</item>--> 
    <!-- Close button icon --> 
    <!--<item name="closeIcon">...</item>--> 
    <!-- Search button icon --> 
    <!--<item name="searchIcon">...</item>--> 
    <!-- Go/commit button icon --> 
    <!--<item name="goIcon">...</item>--> 
    <!--Voice search button icon--> 
    <!--<item name="voiceIcon">@drawable/abc_ic_voice_search_api_mtrl_alpha</item>--> 
    <!-- Commit icon shown in the query suggestion row --> 
    <!--<item name="commitIcon">...</item>--> 
    <!-- Layout for query suggestion rows --> 
    <item name="suggestionRowLayout">@layout/item_suggestion_place</item> 
</style> 

14

在你styles.xml,設置以下到您AppTheme

<style name="AppTheme" parent="AppTheme.Base"> 
    <!-- Customize your theme here. --> 
    <item name="android:dropDownItemStyle">@style/myDropDownItemStyle</item> 
</style> 

<style name="myDropDownItemStyle" parent="Widget.AppCompat.DropDownItem.Spinner"> 
    <item name="android:textColor">@color/secondary_text_default_material_light</item> 
</style> 

這可以改變下拉項目的文字顏色。試試。

+0

這適用於我。 –

+0

沒有AppCompat怎麼樣? – Yar

+0

@Yar將'myDropDownItemStyle'的父類型更改爲非AppCompat樣式。你的基本主題是什麼? – huangming

3

使用樣式你,如果你正在使用android.support.v7.widget改變下拉菜單的背景和項目文本顏色

<!-- ToolBar --> 
<style name="ToolBarStyle" parent="Theme.AppCompat"> 
    <item name="android:textColorPrimary">@android:color/white</item> 
    <item name="android:textColorSecondary">@android:color/white</item> 
    <item name="actionMenuTextColor">@android:color/white</item> 
    <item name="android:dropDownItemStyle">@style/myDropDownItemStyle</item> 
    <item name="android:dropDownListViewStyle">@style/myDropDownListViewStyle</item> 
</style> 


<style name="myDropDownItemStyle" parent="Widget.AppCompat.DropDownItem.Spinner"> 
    <item name="android:textColor">@color/secondary_text_default_material_light</item> 
    <item name="android:textSize">14dp</item> 
</style> 

<style name="myDropDownListViewStyle" parent="Widget.AppCompat.ListView.DropDown"> 
    <item name="android:background">#FFF</item> 
</style> 
8

您可以在res/styles.xml定義以下樣式.SearchView。

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> 
    <!-- Customize your theme here. --> 
    <item name="autoCompleteTextViewStyle">@style/myAutoCompleteTextViewStyle</item> 
    <item name="textAppearanceSearchResultTitle">@style/mySearchResult</item> 
</style> 

<style name="myAutoCompleteTextViewStyle" parent="Widget.AppCompat.Light.AutoCompleteTextView"> 
    <item name="android:popupBackground">#ffffff</item> 
</style> 

<style name="mySearchResult" parent="TextAppearance.AppCompat.SearchResult.Title"> 
    <item name="android:textColor">#000000</item> 
</style> 

如果您使用的是默認搜索查看,屬性應該是 「android:autoCompleteTextViewStyle」 和 「機器人:textAppearanceSearchResultTitle」。我寫了一個post描述這個細節。

+0

你的帖子幫了我很多,非常感謝! – ukama

+0

是Android 4.2上唯一的解決方案。謝謝! – Pablo

+0

爲我和博客文章工作很好,簡潔,謝謝! – henry000