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

时间:2016-08-19 09:58:00

标签: 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);  

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

3 个答案:

答案 0 :(得分:7)

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

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

将其添加到父主题。

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

这应该改变输入的文本。

您也可以使用以下内容:

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

它将更改SearchView的提示文本。

希望这会有所帮助:)

答案 1 :(得分:1)

对于我的问题,我还有一个解决方案。在我的问题中以编程方式更改textcolor我给出的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));

答案 2 :(得分:1)

对于androidx:

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