Как изменить значок SearchView по умолчанию?

мы использовали "Android Action Bar Generator Style " для того, чтобы создать свою собственную тему Холо. Затем я'мы добавили две иконки на панель действий, один для searchFilter и один для выбора файлов,обе иконки белые, Иконка выбора файлов (справа) выглядит хорошо, но почему-то иконка поиска выглядит темно-серой. При наборе текста в поисковом тексте кнопка закрытия также выглядит темно-серой.

Мы попытались изменить цвет панели действий, а также из окна поиска, но безуспешно. Почему в окне поиска отображается этот цвет? Как я могу это изменить?

Большое спасибо.

ОБНОВИТЬ: Я думал, что мое приложение использует мою иконку, но это неt, он использует значок представления поиска по умолчанию, так что мой вопрос на самом деле, как мне изменить значок по умолчанию представления поиска? Это предложение в файле menu.xml не работает:

android:icon="@drawable/selectable_header_search"

Ответы на вопрос(6)

Решение Вопроса

К сожалению, нет простого способа изменитьSearchView значок для пользовательского рисования, так как атрибут темыsearchViewSearchIcon не является публичным Увидетьэтот ответь за подробности.

Тем не менее, я думаю, что ваша проблема вызвана унаследованием от неправильной темы. Пожалуйста, используйтеandroid:Theme.Holo.Light.DarkActionBar в качестве основы для вашей темы. Тогда значки по умолчанию на панели действий должны иметь светлый цвет.


    ...
 

Попробуйте настроить вshowAsAction эта опция: * MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW *

Без этой опции SearchView не берет значок, который вы установили для кнопки действия.

menu.add("Search")
            .setIcon(
                    getResources().getDrawable(
                            R.drawable.selectable_header_search))
            .setActionView(searchView)
            .setShowAsAction(
                    MenuItem.SHOW_AS_ACTION_ALWAYS
                            | MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW
                            | MenuItem.SHOW_AS_ACTION_WITH_TEXT);
 Jonik20 апр. 2015 г., 18:38
Это решило это (пользовательский значок не работает) для меня, Android 4.1 до 5.0. Эквивалентно в меню XML:app:showAsAction="always|collapseActionView"

Для тех, кто, как я, надеется найти способ по-настоящему изменить иконку, вы можете использовать это с actionbar sherlock:

        // Getting the 'search_icon'
        ImageView searchIcon = (ImageView)searchView.findViewById(R.id.abs__search_button);
        // Setting background of 'search_plate' to earlier defined drawable.
        searchIcon.setImageResource(R.drawable.search_button_selector); 

Вы можете'изменить стандартным способом обычным способомandroid:iconпотому что связанное с ним поле было установлено как частное.

 Kyle Ivey20 авг. 2013 г., 11:20
Это, конечно, работает, только если вы используете actionbarsherlock

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

int searchIconId = searchView.getContext().getResources().getIdentifier("android:id/search_button",null, null);
ImageView searchIcon = (ImageView) searchView.findViewById(searchIconId);
searchIcon.setImageResource(R.drawable........);
 desgraci19 февр. 2014 г., 23:29
это создает исключение nullPointerException
 Bahu10 сент. 2016 г., 10:14
Супер это 'работает
 leegor16 апр. 2017 г., 10:22
ImageView searchIconView = (ImageView) searchView.findViewById(android.support.v7.appcompat.R.id.search_button); searchIconView.setImageResource(R.drawable.ic_nav_search); будет работать на Android 4+
 SjoerdvGestel16 июл. 2014 г., 15:34
это не работает на Android 4.3, 4.4

В вашем стиле темы включают это:


    @style/YourActionBarSearch
    @color/your_ab_text_color
    @color/your_ab_hint_color

Теперь вы можете определить стиль SearchView с помощьюsearchViewStyle, а такжеeditTextColor установит цвет текста в поле поиска. Установивandroid:textColorHint Вы также установите цвет подсказки, например, "Поиск...".


    @drawa,ble/ic_ab_search
    @null
    @null
    @drawable/ic_ab_small_search
    @string/toolbar_search_hint
    @drawable/ic_ab_small_search_close

Это будет стилизовать ваш вид поиска как угодно, более или менее. ПолеsearchIcon это значок на панели действий. ПолеsearchHintIcon это маленькая иконка слева от подсказки в поле поиска. ПолеcloseIcon это значок закрытия в правой части поля поиска.

Проверьте это, для больше настроек стиля:

$ANDROID_SDK/platforms/android-24/data/res/values/styles_holo.xml

Самый простой способ, которым яВы обнаружили, что по умолчанию значок поиска в панели действий находится в вашем onPrepareOptionsMenu. Вы можете увидеть мой ответВот на похожий вопрос!

Ваш ответ на вопрос