在SearchView中为文本设置文本颜色和提示文本颜色

The*_*per 1 android

我想将文本颜色和提示文本颜色设置为android.support.v7.widget.SearchView中的文本,该文本不在ActionBar中而不在Menu选项中.我尝试了stackoverflow中提到的几种方法.但他们都没有工作.

int searchSrcTextId =getResources().getIdentifier("android:id/search_src_text", null, null);  
EditText searchEditText = (EditText) searchView.findViewById(searchSrcTextId);  
searchEditText.setTextColor(Color.WHITE);  
searchEditText.setHintTextColor(Color.LTGRAY);  
Run Code Online (Sandbox Code Playgroud)

我尝试了上面的代码,但它在setTextColor行给出了Null指针异常.任何一种帮助都将受到赞赏.谢谢你提前.

Mic*_*rla 9

我会通过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的提示文本.

希望这可以帮助 :)


The*_*per 5

我的问题还有一个解决方案。虽然像我的问题一样以编程方式更改文本颜色,但我给出的 id 是错误的。我们应该像下面这样编辑 android.support.v7.widget.SearchView 的代码。

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