Значок поиска для поиска закрывается, а не белый

Всякий раз, когда я печатаю в своем окне поиска, кнопка закрытия (X) по какой-либо причине, по-видимому, отключена, а не появляется в белом цвете. Как можно устранить эту ошибку, чтобы она выглядела белой?

Введите описание изображения здесь

@Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { inflater.inflate(R.menu.menu_search_list, menu); MenuItem item = menu.findItem(R.id.action_search); SearchView searchView = (SearchView) MenuItemCompat.getActionView(item); searchView.setOnQueryTextListener(this); searchView.setQueryHint(getResources().getString(R.string.station_search_hint)); } 

menu_search_list.xml

 <?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/action_search" android:icon="@drawable/ic_action_search_light" android:title="@string/action_search" android:orderInCategory="100" app:showAsAction="always" app:actionViewClass="android.support.v7.widget.SearchView"/> </menu> 

Ваш код кажется прекрасным. Попробуйте следующий код:

 final MenuItem search = menu.findItem(R.id.action_search); if (search != null) { SearchView searchView = (SearchView) MenuItemCompat.getActionView(search); search.expandActionView(); searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() { @Override public boolean onQueryTextSubmit(String query) { return false; } @Override public boolean onQueryTextChange(String newText) { // Your Logic return false; } }); MenuItemCompat.setOnActionExpandListener(search, new MenuItemCompat.OnActionExpandListener() { @Override public boolean onMenuItemActionExpand(MenuItem item) { return false; } @Override public boolean onMenuItemActionCollapse(MenuItem item) { finish(); return true; } }); 

Еще одна настройка: попробуйте использовать тот же код в onPrepareOptionsMenu дополнительные строки вверху

 menu.clear(); getMenuInflater().inflate(R.menu.menu_search_list, menu); ... // Above code 
 ImageView close_button = (ImageView)searchView.findViewById(R.id.close_button); close_button .setBackgroundResource(R.drawable.your_icon); 

Или (с помощью селектора)

  ImageView close_button =(ImageView)searchView.findViewById(R.id.close_button); close_button .setBackgroundResource(R.drawable.your_image_selector); 

Я думаю, что copy-paste следующего кода:

 View close = searchView.findViewById(R.id.search_close_btn); close.setBackgroundResource(R.drawable.desired_icon); 

Это не хорошее решение. Пожалуйста, используйте стили для этого.
Первое решение. Добавьте значок close в качестве android:searchViewCloseIcon умолчанию android:searchViewCloseIcon в вашей основной теме:

 <style name="Theme" parent="AppBaseTheme"> <item name="android:searchViewCloseIcon">@drawable/ic_your_search_close_icon</item> </style> 

Второе решение (лучше). Стиль вашей панели действий

 <style name="CustomActionBarTheme" parent="@style/Theme.AppCompat.Light.DarkActionBar"> <item name="android:actionBarStyle">@style/MyActionBar</item> <!-- Support library compatibility --> <item name="actionBarStyle">@style/MyActionBar</item> </style> <!-- ActionBar styles --> <style name="MyActionBar" parent="@style/Theme.AppCompat.Light.DarkActionBar"> <item name="searchViewCloseIcon">@android:drawable/ic_your_search_close_icon</item> </style> 

Другие атрибуты SearchView (из исходного кода appcompat-v7 ( ОБНОВЛЕННАЯ ССЫЛКА )):

 <attr name="searchResultListItemHeight" format="dimension" /> <attr name="searchViewAutoCompleteTextView" format="reference" /> <attr name="searchViewCloseIcon" format="reference" /> <attr name="searchViewEditQuery" format="reference" /> <attr name="searchViewEditQueryBackground" format="reference" /> <attr name="searchViewGoIcon" format="reference" /> <attr name="searchViewSearchIcon" format="reference" /> <attr name="searchViewTextField" format="reference" /> <attr name="searchViewTextFieldRight" format="reference" /> <attr name="searchViewVoiceIcon" format="reference" /> 

Использование Exaple:

 <item name="searchDropdownBackground">@android:drawable/spinner_dropdown_background</item> <item name="searchViewTextField">@drawable/textfield_searchview_holo_dark</item> <item name="searchViewTextFieldRight">@drawable/textfield_searchview_right_holo_dark</item> <item name="searchViewCloseIcon">@android:drawable/ic_clear</item> <item name="searchViewSearchIcon">@android:drawable/ic_search</item> <item name="searchViewGoIcon">@android:drawable/ic_go</item> <item name="searchViewVoiceIcon">@android:drawable/ic_voice_search</item> <item name="searchViewEditQuery">@android:drawable/ic_commit_search_api_holo_dark</item> <item name="searchViewEditQueryBackground">?attr/selectableItemBackground</item> <item name="searchDialogTheme">@style/Theme.SearchBar</item> 

Подробнее о стилизации:
Android – Theming ActionBar и SearchView в нем Андреас Нильссон
Стилирование панели действий официальной документацией Android