使用支持库更改操作栏搜索提示的文本颜色

4
我想改变搜索视图提示文本的颜色,但我尝试了很多方法都没有成功。 像这篇文章中所说:Changing action bar searchview hint text color 我正在使用Appcompat,actionbar的支持库。
我尝试过以下方式,但出现了空指针返回:
AutoCompleteTextView searchText = (AutoCompleteTextView) searchView.findViewById(R.id.abs__search_src_text);
searchView.findViewById(R.id.abs__search_src_text);
searchText.setHintTextColor(getResources().getColor(R.color.white));
searchText.setTextColor(getResources().getColor(R.color.white)); 
3个回答

20

我猜这是AutoCompleteTextView的错误ID,除非您使用自定义操作栏搜索小部件。尝试像以下这样:

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

使用 android.support.v7.appcompat.R.id.search_src_text 与使用 R.id.search_src_text 相比是可行的。 - Jared Burrows
1
感谢您。针对AndroidX,您还可以使用androidx.appcompat.R.id.search_src_text。 - Jerry Sha

3

我也在这里找到了答案:

getMenuInflater().inflate(R.menu.menu_home, menu);
MenuItem searchItem = menu.findItem(R.id.item_search);
mSearchView = (SearchView) MenuItemCompat.getActionView(searchItem);
mSearchView.setOnQueryTextListener(this);
mSearchView.setQueryHint(getString(R.string.text));
SearchAutoComplete searchAutoComplete = (SearchAutoComplete) mSearchView.findViewById(android.support.v7.appcompat.R.id.search_src_text);
searchAutoComplete.setHintTextColor(mRes.getColor(android.R.color.white));
searchAutoComplete.setTextSize(14);

0
使用以下代码:

getResources().getColor(R.color.white)

可能会出现警告,提示getColor(int)已过时。这是因为从api 23开始,ContextCompat添加了一个新的getColor()方法。

所以只需使用以下代码:

((EditText) searchView.findViewById (android.support.v7.appcompat.R.id.search_src_text))
                     .setHintTextColor (ContextCompat.getColor (getBaseContext(), Color.WHITE));

它对我有用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接