Я хочу отключить значок Mag, отображаемый в компоненте просмотра. Любая идея, как ссылаться на нее и удалять ее или заменять другим с возможностью рисования?Иконка Android SearchView
ответ
В вашей теме:
<style name="Theme" parent="Your parent theme">
<item name="android:searchViewSearchIcon">@android:drawable/ic_search</item>
</style>
Edit:
searchViewSearchIcon
является частным атрибутом. Поэтому этот ответ не работает (на родном ActionBar).
Установите его на '@android: color/transparent', чтобы удалить его или изменить его на то, что вы хотите. –
@Mattias благодарит много: D –
есть ли какой-нибудь список того, что вы можете изменить где? –
Поскольку формулировка вопроса не содержит упоминания о 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);
Согласно этому post, при использовании SearchView
из библиотеки поддержки (android-support-v7-appcompat
в моем случае) с setIconifiedByDefault(false)
отображается значок за пределами редактирования текстового поля (SearchAutoComplete
). В противном случае (setIconifiedByDefault(true)
) он отображается внутри коробки. Представленный код используется для отключенной «значки» по умолчанию и может потребовать некоторых изменений для работы с «отображаемым» видом поиска. Я не знаю, относится ли это к ActionBarSherlock
.
Надеюсь, это поможет.
Я использую appcompat SearchView, и у меня есть этот значок внутри edit textbox и i не может уйти. есть ли у вас другие идеи? – AndrewS
Вероятно, вы должны проверить, какая версия находится в вашей библиотеке, и посмотреть ее источники, в частности, на файл макета. Например, если вы посмотрите на [эти Android-источники] (http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/4.0.3_r1/frameworks/base/core /res/res/layout/search_view.xml) вы увидите, что 'search_mag_icon' находится за пределами' search_plate'. С помощью источника вы можете определить, какие элементы «найти» в вашем макете. – Stan
У меня есть последняя версия SupportLibrary, а в ресурсах search_mag_icon находится повсюду. может быть, что значок не search_mag_icon, а какой-то значок внутри SearchAutoComplete? Как я могу найти ресурсы для этого? – AndrewS
Если вы используете библиотеку совместимых приложений v7, вы можете легко изменить это в теме. В вашей теме, которая простирается от темы AppCompat, просто добавьте строку:
<item name="searchViewSearchIcon">@drawable/ic_search</item>
Этот значок является подсказкой. Таким образом, вы можете просто установить новый текст подсказки.
int searchPlateId = searchView.getContext().getResources().getIdentifier("android:id/search_src_text", null, null);
EditText searchPlate = (EditText) searchView.findViewById(searchPlateId);
searchPlate.setHint("Search");
Если вы хотите значка в виде подсказки текста используйте spanable строку с 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);
Чтобы удалить кнопку поиска подсказки:
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);
Эти линии remo вед увеличительное стекло:
//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" />
Или вы можете сделать Programatically 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) searchMenuItem.getActionView();
searchView.setIconifiedByDefault(true);
}
Вы должны настроить 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" />
Надеется, что это помогает!
В вашем стиле темы включают в себя следующее:
<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
является значком закрытия в правой части поля поиска.
В XML в SearchView компоненте добавить следующий:
app:searchHintIcon="@null"
- 1. Почему разница LayoutInflater вызывает разницу Иконка SearchView
- 2. Android SearchView
- 3. SearchView Android
- 4. Иконка не показывая Android
- 5. Иконка android dont появляется
- 6. Android: странное поведение SearchView
- 7. Пользовательский поиск searchView android
- 8. Android SearchView OnClickListener
- 9. Android SearchView не работает
- 10. Android - Создание пользовательского SearchView
- 11. Android SearchView open direction
- 12. SearchView от EditText android
- 13. Android ActionBar с searchView
- 14. Android SearchView Форматирование
- 15. Android Searchview с автозаполнением
- 16. Android Searchview сверху
- 17. Android SearchView Цвет текста
- 18. Android - Задержка расширения SearchView
- 19. Android ActionbarSherlock SearchView
- 20. SearchView is null android
- 21. Android SearchView OnClick
- 22. SearchView и NavigationDrawer Android
- 23. Android action bar searchview
- 24. Android Actionbar SearchView
- 25. Android: SearchView не работает
- 26. Android: SearchView textView Listener
- 27. Android SearchView in ActionBar
- 28. Android Material Design SearchView
- 29. Android SearchView без намерения
- 30. android fragmentList searchview
Wonders почему бы кто-нибудь вниз голосовать вопрос? –
о белой строке под иконкой SearchView - как ее настроить? – AndrewS
Вы когда-нибудь это выясняли? – theblang