更改AppCompat SearchView建议背景

7
我希望在我的主题样式中设置SearchView下拉建议的背景。我不想通过布局文件来实现这一点,因为我希望操作系统自己处理选择背景。通过编程方式设置背景会导致列表选择器被删除,而我希望避免这种情况。
这是我目前拥有的内容。我希望行的背景是白色的。我需要在我的styles.xml文件中更改什么才能实现这一点?
附注:我自己删除了建议框中的文本,所以它看起来像一个大的黑色块。

1
尝试在自定义主题中为AutoCompletTextView小部件设置新样式,并在该样式中更改背景(popupBackground是属性)。 - user
@Luksprog,就是这个了,谢谢。我一直没能找到如何使用特定属性来设计AutoCompleteTextView的任何指针。 这确实让我发现了Android中的一个错误。如果您想将其作为答案添加,我会接受的。 - tolgap
4个回答

12

SearchView具有基于标准样式AutoCompleteTextView 的弹出窗口,因此您可以在自定义主题中更改此小部件的标准样式以获得背景更改。因此,在自定义主题中重写autoCompleteTextViewStyle属性,指向新样式,在其中必须使用所需背景覆盖popupBackground


你能告诉我如何改变listItem的textColor吗?我需要修改ListViewSelector吗? - shaktiman_droid
你说的我不理解,请用编程形式清晰地表达你的意思。 - Ashish Shahi
这应该是最佳答案。 - ban-geoengineering
1
@Luksprog,你应该提供一个示例代码,以使答案更加简洁明了。 - blueware

0

我知道这是一个老问题,但这是对我有效的解决方案。

<style name="AppTheme" parent="Theme.MaterialComponents.DayNight.DarkActionBar"> <item name="autoCompleteTextViewStyle">@style/MyAutoCompleteTextView</item> <item name="android:dropDownItemStyle">@style/MyDropDownItemStyle</item> </style>

以下更改了浅色主题下建议下拉菜单的背景颜色。

<style name="MyAutoCompleteTextView" parent="Widget.AppCompat.Light.AutoCompleteTextView"><item name="android:popupBackground">@android:color/white</item></style>

以下更改了浅色主题下建议下拉菜单的文本颜色为黑色。

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


0
你可以通过使用以下代码来实现这个功能:

int autoCompleteTextViewID = getResources().getIdentifier("search_src_text", "id", getPackageName());
mSearchAutoCompleteTextView = mSearchView.findViewById(autoCompleteTextViewID);
mSearchAutoCompleteTextView.setDropDownBackgroundResource(R.color.white); // Setting background color of the suggestion drop down list

虽然这样做可以起作用,但列表中的文本仍保持相同的颜色(白色),因此您无法看到任何内容。因此,更改样式更为合适。 - John61590
@John61590,你可以为列表项使用自定义布局。 - Zain
实际上,没有必要这样做。您可以在主题中覆盖dropDownItemStyle并在那里更改文本颜色。 `<item name="android:dropDownItemStyle">@style/MyDropDownItemStyle</item><style name="MyDropDownItemStyle" parent="Widget.AppCompat.DropDownItem.Spinner"> <item name="android:textColor">@color/black</item></style>` - John61590

-1
searchView.setBackgroundColor(Color.argb( 164, 200, 57, 1));

或者:

searchView.setBackgroundColor(Color.rgb(116,0,0));

将此插入:

public boolean onCreateOptionsMenu(Menu menu)


这只是将工具栏中的整个搜索视图设置为另一种颜色,而不是所指的下拉菜单。 - John61590

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接