如何更改SearchView textcolor?

joj*_*ojo 10 android

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

And*_*eek 23

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));
Run Code Online (Sandbox Code Playgroud)


Cor*_*ălu 22

深入研究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>
Run Code Online (Sandbox Code Playgroud)

  • 这是可行的,您可以通过添加xml`app:theme =“ @ style / SearchViewTextTheme”`而不是将其应用于整个`AppTheme`来为单个searchView设置它 (5认同)

Sat*_*r J 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);
Run Code Online (Sandbox Code Playgroud)

要么

((EditText)  searchView.findViewById(android.support.v7.appcompat.R.id.search_src_text))
       .setHintTextColor(getResources().getColor(R.color.white));
Run Code Online (Sandbox Code Playgroud)

要么

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

这可能对你有所帮助.


hor*_*319 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>
Run Code Online (Sandbox Code Playgroud)

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

app:theme="@style/SearchViewStyle"
Run Code Online (Sandbox Code Playgroud)


小智 5

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

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

将其添加到父主题中。

<item name="android:editTextColor">@android:color/white</item>
Run Code Online (Sandbox Code Playgroud)

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

你也可以使用这样的东西:

<item name="android:textColorHint">@android:color/white</item>
Run Code Online (Sandbox Code Playgroud)

它将更改 SearchView 的提示文本。

希望这可以帮助 :)


Jit*_*P.S 2

尝试一下,如果不起作用尝试更改您的主题。

((EditText) searchView.findViewById(android.support.v7.appcompat.R.id.search_src_text)).setHintTextColor(getResources().getColor(R.color.white));
Run Code Online (Sandbox Code Playgroud)

或者尝试这样

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