私のアプリには、検索候補を表示する検索ビューがあります。ドロップダウン/スピナーとテキストを特定の色にしたい。現在、私が行うことができた唯一の変更は、以下を介して入力されたテキストのテキストの色です。
<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>
アプリは現在、次のような検索ビューの結果を表示します。
私が知りたいのは、searchHintの色、ドロップダウンの背景、ドロップダウンアイテムのテキストの色などの部分をどのように変更するかです。
API19以降をターゲットにしています
したがって、多くの検索の後、これに最も近い解決策は次のとおりです( GZ95の回答 !に感謝します):
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);
それは最もエレガントではありませんが、私にとってはうまくいきました。私が未解決の唯一の質問は、提案されたアイテムのテキストの色を変更する方法です。この問題に対するより最適な解決策を聞いて歓迎します
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>
これにより、ドロップダウンアイテムのテキストの色が変わる可能性があります。ぜひお試しください。
Android.support.v7.widget.SearchViewを使用している場合は、res /styles.xmlで次のスタイルを定義できます。
<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>
デフォルトのSearchViewを使用している場合、属性は「Android:autoCompleteTextViewStyle」および「Android:textAppearanceSearchResultTitle」である必要があります。私はこれについての詳細を説明する 投稿 を書きました。
スタイルを使用すると、ドロップダウンの背景とアイテムのテキストの色を変更できます
<!-- 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>
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>
私は同じ問題を抱えていました(白い背景の提案に白いテキストがあります)が、すべての答えがうまくいきません。だから私はついにこれをtextColor属性をTextView for adapterに変更し、AutoCompleteTextViewに添付して解決しました:
コード:
AutoCompleteTextView autoComplete = ...;
List<String> suggestions = Arrays.asList("a", "b", "c");
ArrayAdapter<String> adapter = new ArrayAdapter<>(context, R.layout.dropdown_item, suggestions);
autoComplete.setAdapter(adapter);
dropdown_item.xml:
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:textColor="#000000"
...
/>