如何更改SearchView textcolor?

时间:2016-05-11 12:05:23

标签: android

我的SearchView位于布局(LineaLayout / RelativeLayout)中,而不是在操作栏中。如何更改文本颜色。默认颜色是白色如何更改文本颜色?

9 个答案:

答案 0 :(得分:20)

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));

答案 1 :(得分:16)

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

创建一个不同的自动完成样式并在app主题中设置它解决了我的问题。

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

答案 2 :(得分:8)

试试这个,

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>"));

这可能对你有所帮助。

答案 3 :(得分:2)

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

((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>"));

答案 4 :(得分:1)

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

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

将其添加到父主题。

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

这应该改变输入的文本。

您也可以使用以下内容:

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

它将更改SearchView的提示文本。

希望这会有所帮助:)

答案 5 :(得分:1)

只需使用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>

enter image description here enter image description here

答案 6 :(得分:0)

对我来说,下一种方法是

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 :(得分:0)

link中,搜索图标,搜索提示图标,关闭图标,标牌,查询提示颜色,查询颜色已更改

答案 8 :(得分:0)

这对我有用:

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));