Intereting Posts
Как изменить текст TextView, нажав кнопку IllegalStateException – библиотека поддержки фрагментов Нет найденного ресурса, соответствующего данному имени Xamarin Android Требуется ли лицензирование для платных приложений? Неустойчиво и синхронизировано в AsyncTask Как инструмент HierarchyViewer от android studio знает свойства просмотров экрана Android Что такое «android: fontFamily =« sans-serif-light »в Java-коде? Размеры баннера AdMob на Android Команда тайм-аута ping -W не работает для Android Обновите плагин Android Studio Gradle до последней версии NPE: CursorTreeAdapter $ MyCursorHelper.changeCursor (Cursor, boolean) 'для ссылки на нулевой объект Как реализовать годовую подписку только на самом приложении Android, а не на продуктах в приложении Как программно изменить TextView на ImageView и обратно Как включить мое приложение в качестве опции набора номера при вызове из адресной книги? Обнаруживать или приближать задержку Bluetooth на Android (воспроизведение аудио)

Иконка Android SearchView

Я хочу отключить значок Mag, отображаемый внутри компонента просмотра. Любая идея, как ссылаться на нее и удалять ее или заменять другим с возможностью рисования?

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

В вашей теме:

<style name="Theme" parent="Your parent theme"> <item name="android:searchViewSearchIcon">@android:drawable/ic_search</item> </style> 

Редактировать:
searchViewSearchIcon – это частный атрибут. Поэтому этот ответ не работает (на родном ActionBar).

Поскольку формулировка вопроса не содержит упоминания ActionBarSherlock (кроме тега), и добавлены комментарии, что принятый ответ не работает для стандартной и / или панели действий библиотеки поддержки, я отправляю другой ответ. Вот код Java для onCreate :

 // obtain action bar ActionBar actionBar = getSupportActionBar(); // find SearchView (im my case it's in a custom layout because of left alignment) View v = actionBar.getCustomView(); SearchView searchView = (SearchView)v.findViewById(R.id.search_view); ImageView icon = (ImageView)searchView.findViewById(android.support.v7.appcompat.R.id.search_mag_icon); // method 1: does not work persistently, because the next line // should be probably called after every manipulation with SearchView // icon.setVisibility(View.GONE); // method 2: working code icon.setAdjustViewBounds(true); icon.setMaxWidth(0); icon.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); icon.setImageDrawable(null); 

Согласно этому сообщению , при использовании SearchView из библиотеки поддержки (поддержка android-support-v7-appcompat в моем случае) с помощью setIconifiedByDefault(false) значок отображается вне текстового SearchAutoComplete редактирования ( SearchAutoComplete ). В противном случае ( setIconifiedByDefault(true) ) отображается внутри поля. Представленный код используется для отключенной «значки» по умолчанию и может потребовать некоторых изменений для работы с «отображаемым» видом поиска. Я не знаю, относится ли это к ActionBarSherlock .

Надеюсь это поможет.

Этот значок является подсказкой. Таким образом, вы можете просто установить новый текст подсказки.

 int searchPlateId = searchView.getContext().getResources().getIdentifier("android:id/search_src_text", null, null); EditText searchPlate = (EditText) searchView.findViewById(searchPlateId); searchPlate.setHint("Search"); 

Если вы хотите, чтобы значок в качестве текста подсказки использовал spanable string с ImageSpan

 int searchPlateId = searchView.getContext().getResources().getIdentifier("android:id/search_src_text", null, null); EditText searchPlate = (EditText) searchView.findViewById(searchPlateId); searchPlate.setTextColor(getResources().getColor(R.color.search_text_color)); SpannableString string = new SpannableString(" "); Drawable d = getResources().getDrawable(R.drawable.ic_search); d.setBounds(0, 0, d.getIntrinsicWidth(), d.getIntrinsicHeight()); ImageSpan span = new ImageSpan(d, ImageSpan.ALIGN_BOTTOM); string.setSpan(span, 0, 1, Spannable.SPAN_INCLUSIVE_EXCLUSIVE); searchPlate.setHint(string); 

Вы должны настроить стиль SearchView следующим образом:

 <style name="MySearchViewStyle" parent="Widget.AppCompat.SearchView"> <!-- Search button icon --> <item name="searchIcon">@drawable/ic_arrow_back</item> </style> 

А затем добавьте его в свой AppTheme .

 <!-- Base application theme. --> <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> <!-- your other colors and styles --> <item name="searchViewStyle">@style/MySearchViewStyle</item> </style> 

И примените его к вашему поисковому представлению, используя style тега:

 <android.support.v7.widget.SearchView xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/searchView" android:layout_height="wrap_content" android:layout_width="match_parent" app:queryHint="@string/search_hint" android:focusable="true" android:focusableInTouchMode="true" style="@style/MySearchViewStyle" app:iconifiedByDefault="false" /> 

Надеюсь, поможет!

Если вы используете библиотеку совместимости приложений v7, вы можете легко изменить ее в теме. В вашей теме, которая простирается от темы AppCompat, просто добавьте строку, например:

 <item name="searchViewSearchIcon">@drawable/ic_search</item> 

Чтобы удалить кнопку поиска подсказки:

 mNearMeSearchBar = (SearchView) mView.findViewById(R.id.nearme_search_component_nearme_edittext); mNearMeSearchBar.setIconifiedByDefault(false); //Removes Search Hint Icon 

Чтобы изменить кнопку поиска:

 int searchImgId = getResources().getIdentifier("android:id/search_mag_icon", null, null); ImageView v = (ImageView) mNearMeSearchBar.findViewById(searchImgId); v.setImageResource(R.drawable.ic_compass); 

Эти линии удалили лупу:

  //remove search icon mSearchView.setIconifiedByDefault(false); ImageView icon = (ImageView) mSearchView.findViewById(android.support.v7.appcompat.R.id.search_mag_icon); icon.setVisibility(View.GONE); 

Вы должны добавить эту строку в свой MenuItem android:iconifiedByDefault="@android:color/transparent"

 <item android:id="@+id/activity_home_action_search" android:icon="@drawable/ic_action_search" android:title="@string/activity_home_search_title" android:iconifiedByDefault="@android:color/transparent" app:actionViewClass="android.support.v7.widget.SearchView" app:showAsAction="always|collapseActionView" /> 

Или вы можете сделать программно searchView.setIconifiedByDefault(true);

 @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { super.onCreateOptionsMenu(menu, inflater); getMenuInflater().inflate(R.menu.home, menu); MenuItem searchMenuItem = menu.findItem(R.id.activity_home_action_search); SearchView searchView = (SearchView) MenuItemCompat.getActionView(searchMenuItem); searchView.setIconifiedByDefault(true); } 

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

 <style name="YourTheme.Toolbar"> <item name="searchViewStyle">@style/YourActionBarSearch</item> <item name="editTextColor">@color/your_ab_text_color</item> <item name="android:textColorHint">@color/your_ab_hint_color</item> </style> 

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

 <style name="YourActionBarSearch" parent="@style/Widget.Holo.SearchView"> <item name="searchIcon">@drawable/ic_ab_search</item> <item name="queryBackground">@null</item> <item name="submitBackground">@null</item> <item name="searchHintIcon">@null</item> <item name="defaultQueryHint">@null</item> <item name="closeIcon">@drawable/ic_ab_small_search_close</item> </style> 

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