Как установить цвет значка на панели инструментов Android?
Я разработал проект GitHub от https://github.com/nglauber/playground/tree/master/android/DemoSearch
Я хочу, чтобы цвет значка поиска был чисто белым. На данный момент значок поиска имеет серый цвет и, очевидно, отличается от белого текста "Demo Search".
![Значок поиска панели инструментов в сером цвете]()
Edit:
Основываясь на некоторых предложениях, я создал новый значок, используя чистый белый (точнее, RGB = 255,255,255), и использую его вместо android: ic_menu_search. Android будет оттенять его серым тоном (проверено с помощью инструмента выбора цвета на снимке экрана), хотя исходный значок находится в чисто белом цвете.
Это говорит мне о том, что Android целенаправленно подкрашивает значок. И я надеюсь, что есть способ, которым я могу иметь элемент управления для установки или изменения цвета значка в панели инструментов Android.
![Значок поиска панели инструментов в сером цвете]()
Ответы
Ответ 1
Я нашел ответ на свой вопрос. Я решил документировать его, чтобы он мог помочь другим разработчикам Android.
Короткий ответ: да, мы можем сохранить цвет значка на панели инструментов Android, и нам нужно сделать это, импортировав ресурс через
- SVG или
- PNG с типом иконки как иконки запуска
![PNG with icon type as Launcher Icons]()
Первоначальная проблема, с которой я столкнулся, была связана с
- PNG с типом значков в виде панели действий и значков вкладок
В этом случае Android Studio Image Asset по неизвестной причине немного изменит цвет значка при сохранении в папку проекта res. И Android будет дополнительно менять цвет значка, когда он, наконец, отображается на экране. Конечным результатом было то, что я описал в вопросе, где первоначально чисто белый значок превратится и станет серым.
Если мы используем SVG или PNG с типом иконки в качестве иконки запуска, цвет значка не будет меняться. Значок сможет сохранить свой первоначальный цвет. Это заставляет меня поверить, что это ошибка в Android Studio, а не помощь в разработке рекомендаций.
![PNG with icon type as Action Bar and Tab Icons]()
Аналогичное наблюдение сообщается в этом посте. @markj сообщил, что "получающиеся изображения - просто бесполезные серые формы".
Полученные скриншоты среды Android
Цвет поддерживается
(SVG)
(PNG как значки запуска)
Цвет изменился
(PNG как значки панели действий и вкладок)
Ответ 2
Вам нужно сделать белый значок и добавить его в menu_search.xml
в файл res/menu`.
В настоящее время его android:icon="@android:drawable/ic_menu_search"
. Но вы можете использовать свой собственный значок здесь. Затем вы можете записать его как android:icon="@drawable/ic_menu_search"
в файле res/menu
.
Ответ 3
Вам нужно использовать меню. Добавить searchView как элемент в меню
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/menu_search"
android:title="Search"
app:actionViewClass="android.support.v7.widget.SearchView"
app:showAsAction="ifRoom"
android:orderInCategory="1"
android:menuCategory="secondary"
android:visible="true"
/>
</menu>
И в вашей деятельности Переопределите этот метод
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
menuItem = menu.findItem(R.id.menu_search);
searchView = (SearchView) MenuItemCompat.getActionView(menuItem);
searchView.setIconifiedByDefault(true);
//get search icon View and set your drawable
ImageView icon = (ImageView)searchView.findViewById(R.id.search_button);
icon.setImageDrawable(ContextCompat.getDrawable(getActivity(), R.drawable.ic_search_white_24dp));
return true;
}
Ответ 4
Вам просто нужно перейти на использование класса SearchView из библиотеки поддержки
<item
android:id="@+id/action_search"
android:icon="@drawable/ic_search_white_24dp"
android:orderInCategory="2"
android:title="Search"
app:actionViewClass="android.support.v7.widget.SearchView"
app:showAsAction="always" />