Изменить цвет текста подсказки поиска на панели действий с помощью библиотеки поддержки

Я хочу изменить цвет текста в подсказке поиска, но я пытался разными способами, но безуспешно. Как в этом сообщении: Изменение цвета текста подсказки панели действий

Я использую Appcompat, библиотеку поддержки панели действий.

Я пробовал это с возвратом нулевого указателя:

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

person Leandro Hoffmann    schedule 13.09.2013    source источник


Ответы (3)


Я думаю, неправильный идентификатор для AutoCompleteTextView. Если только вы не используете настраиваемый виджет поиска панели действий. Попробуйте что-л. как следующее:

((EditText)searchView.findViewById(android.support.v7.appcompat.R.id.search_src_text))
            .setHintTextColor(getResources().getColor(R.color.white));
person Alexander Zhak    schedule 15.09.2013
comment
Использование android.support.v7.appcompat.R.id.search_src_text работает по сравнению с использованием R.id.search_src_text. - person Jared Burrows; 23.05.2015
comment
Благодарю. Для androidx вы также можете использовать androidx.appcompat.R.id.search_src_text - person Jerry Sha; 01.04.2019

Я нашел ответ здесь:

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);
person Leandro Hoffmann    schedule 15.09.2013

Используя следующий код:

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

возможно, появится предупреждение о том, что getColor(int) is deprecated. Это связано с тем, что из API 23 в ContextCompat был добавлен новый метод getColor().

Поэтому просто используйте следующее:

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

Это сработало для меня.

person Jean Douglas    schedule 31.08.2017