【问题标题】:Changing the background color of searchview autocomplete dropdown更改 searchview 自动完成下拉菜单的背景颜色
【发布时间】:2014-12-02 01:05:24
【问题描述】:

我有一个带有内容提供商的搜索视图,用于自定义建议,这些建议显示在下拉列表中。但是,下拉背景是黑色的,而文本是黑色的,所以它不是很明显。我的应用主题继承自 Theme.AppCompat.Light,因此我的应用中的其他所有内容都是浅色背景上的黑色文本。

我想更改下拉菜单的背景,以便文本可读,但我还没有找到任何方法。我得到的最接近的是这里的解决方案:Style Android SearchView Drop down popup 但是当下拉菜单出现时,东西看起来很乱。

有什么可行的解决方案吗?

【问题讨论】:

标签: android styles searchview


【解决方案1】:

应用样式您可以更改下拉背景颜色和项目文本颜色和大小

<!-- 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>

【讨论】:

    【解决方案2】:

    这是一种可能性。

    定义查询建议行布局,例如R.layout.li_query_suggestion,看起来像这样:

    <?xml version="1.0" encoding="utf-8"?>
    <TextView
        android:id="@android:id/text1"
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@android:color/white"
        android:gravity="center_vertical"
        android:minHeight="56dp"
        android:paddingLeft="16dp"
        android:paddingRight="16dp"
        android:textAppearance="?android:attr/textAppearanceListItemSmall"
        android:textColor="@android:color/black"
        tools:text="Blah blah blah"/>
    

    请注意,背景颜色为白色,文本颜色为黑色。当然,您可以更改这些值。

    然后,在您的光标适配器中,将您创建的布局指定为行布局。例如:

    CursorAdapter suggestionAdapter = new SimpleCursorAdapter(
        getActivity(), 
        R.layout.li_query_suggestion, 
        null, 
        new String[]{"name"}, 
        new int[]{android.R.id.text1}, 
        0);
    

    这将为您提供如下所示的内容:

    仅供参考,我当前的主题是这样的:

    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.NoActionBar">
        <item name="colorPrimary">@color/light_blue_500</item>
        <item name="colorPrimaryDark">@color/light_blue_700</item>
        <item name="colorAccent">@color/pink_a200</item>
        <item name="android:windowActionBarOverlay">true</item>
        <item name="searchViewStyle">@style/CustomSearchView</item>
    </style>
    

    【讨论】:

      【解决方案3】:

      我认为你应该使用

      SearchView.SearchAutoComplete autoCompleteTextView = (SearchView.SearchAutoComplete) searchView.findViewById(R.id.search_src_text);
      if (autoCompleteTextView != null) {
          autoCompleteTextView.setDropDownBackgroundDrawable(getResources().getDrawable(R.drawable.abc_popup_background_mtrl_mult));
      }
      

      这可以将 SearchAutoComplete 下拉背景设置为 Light

      【讨论】:

        【解决方案4】:

        简单的解决方案

        int autoCompleteTextViewID = getResources().getIdentifier("search_src_text", "id", getPackageName());
        mSearchAutoCompleteTextView = mSearchView.findViewById(autoCompleteTextViewID);
        mSearchAutoCompleteTextView.setDropDownBackgroundResource(R.color.white);
        

        【讨论】:

          猜你喜欢
          • 2014-07-05
          • 1970-01-01
          • 2023-01-05
          • 2020-09-03
          • 1970-01-01
          • 2014-02-02
          • 2015-05-26
          • 2019-10-31
          • 1970-01-01
          相关资源
          最近更新 更多