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

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

Я использую 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)); 

3 ответа

Решение

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

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

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

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

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

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

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

Так что просто используйте следующее:

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

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

Другие вопросы по тегам