【问题标题】:How to change SearchView textcolor?如何更改 SearchView 文本颜色?
【发布时间】:2016-09-06 19:50:29
【问题描述】:

我的SearchView 位于LinearLayout/RelativeLayout 而不是操作栏。

它的默认文字颜色是白色,如何更改?

【问题讨论】:

    标签: android searchview


    【解决方案1】:

    试试这个,如果它不起作用尝试改变你的主题。

    ((EditText) searchView.findViewById(android.support.v7.appcompat.R.id.search_src_text)).setHintTextColor(getResources().getColor(R.color.white));
    

    或者这样试试

    searchView.setQueryHint(Html.fromHtml("<font color = #ffffff>" + getResources().getString(R.string.hintSearchMess) + "</font>"));
    

    【讨论】:

      【解决方案2】:

      对于 Androidx 库

      SearchView searchView = (SearchView) findViewById(R.id.search);
      EditText searchEditText = searchView.findViewById(androidx.appcompat.R.id.search_src_text);
      searchEditText.setTextColor(getResources().getColor(R.color.white));
      searchEditText.setHintTextColor(getResources().getColor(R.color.white));
      

      对于 Android 支持库

      SearchView searchView = (SearchView) findViewById(R.id.search);
      EditText searchEditText = (EditText) searchView.findViewById(android.support.v7.appcompat.R.id.search_src_text);
      searchEditText.setTextColor(getResources().getColor(R.color.white));
      searchEditText.setHintTextColor(getResources().getColor(R.color.white));
      

      【讨论】:

      • 我应该在onPrepareOptionsMenu方法中添加这段代码吗?
      【解决方案3】:

      试试这个,

      SearchView searchView= (SearchView) findViewById(R.id.searchView1);
      int id = searchView.getContext()
                     .getResources()
                     .getIdentifier("android:id/search_src_text", null, null);
      TextView textView = (TextView) searchView.findViewById(id);
      textView.setTextColor(Color.WHITE);
      

      ((EditText)  searchView.findViewById(android.support.v7.appcompat.R.id.search_src_text))
             .setHintTextColor(getResources().getColor(R.color.white));
      

      searchView.setQueryHint(Html.fromHtml("<font color = #ffffff>" +    
                    getResources().getString(R.string.your_str) + "</font>"));
      

      这可能会对你有所帮助。

      【讨论】:

        【解决方案4】:

        深入研究 appcompat SearchView 的源代码,我发现它使用 AppCompatAutoCompleteTextView,默认情况下使用 autoCompleteTextView 样式。

        创建不同的自动完成样式并将其设置在应用主题中解决了我的问题。

        <style name="SearchAutoCompleteTextView" parent="Widget.AppCompat.Light.AutoCompleteTextView">
            <item name="android:textColor">@color/my_text_color</item>
            <item name="android:textColorHint">@color/my_hint_color</item>
        </style>
        
        <style name="AppTheme" parent="Theme.AppCompat.Light">
            ...
            <item name="autoCompleteTextViewStyle">@style/SearchAutoCompleteTextView</item>
        </style>
        

        【讨论】:

        • 这应该是正确的答案 - 如果您想更改 android.support.v7.widget.SearchView 的文本/提示颜色
        • 这行得通,您可以通过添加 xml app:theme="@style/SearchViewTextTheme" 而不是将其应用于整个 AppTheme 来为单个 searchViews 设置它
        【解决方案5】:

        我会通过 xml 布局文件来完成这种工作。这可以在 res/layout 文件夹中找到。

        您需要执行类似于以下的操作:

        将此添加到父主题。

        <item name="android:editTextColor">@android:color/white</item>
        

        这应该会改变输入的文本。

        你也可以这样使用:

        <item name="android:textColorHint">@android:color/white</item>
        

        它将更改 SearchView 的提示文本。

        希望这会有所帮助:)

        【讨论】:

          【解决方案6】:

          对我来说,下一个方法是:

          1.将样式添加到您的styles.xml中

          <style name="SearchViewStyle" parent="Widget.AppCompat.SearchView">
              <item name="android:textColor">@color/white</item>
              <item name="android:editTextColor">@color/white</item>
              <item name="android:textColorHint">@color/light_gray</item>
          </style>
          

          2.在 SearchView 布局代码中添加这一行

          app:theme="@style/SearchViewStyle"
          

          【讨论】:

            【解决方案7】:

            在这个link中搜索图标、搜索提示图标、关闭图标、盘子、查询提示颜色、查询颜色的颜色发生了变化

            【讨论】:

              【解决方案8】:

              只需使用android:theme 属性覆盖默认颜色:

                 <androidx.appcompat.widget.SearchView
                     android:theme="@style/ThemeOverlay.SearchView"
              

                 <style name="ThemeOverlay.SearchView" parent="">
                      <!-- Text color -->
                      <item name="android:editTextColor">@color/...</item>
                      <!-- Hint text color -->
                      <item name="android:textColorHint">@color/...</item>
                  </style>
              

              【讨论】:

                【解决方案9】:

                这对我有用:

                EditText searchEditText = searchView.findViewById(androidx.appcompat.R.id.search_src_text);
                searchEditText.setTextColor(getResources().getColor(R.color.white));
                searchEditText.setHint("Search");
                searchEditText.setHintTextColor(getResources().getColor(R.color.white));
                

                【讨论】:

                • 光标颜色和关闭/清除图标颜色如何?
                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2021-08-20
                • 2013-08-18
                • 1970-01-01
                • 2016-01-22
                • 2012-07-04
                相关资源
                最近更新 更多