android support v7 widget searchview

I am using search view.

Is this possible to change text color and icon color to view?

Currently it shows black text and icon. I want to change it to white color text and white search icon.

6 Answers 6

For the android.support.v7.widget.SearchView you can change the text color, text hint color and the icon with this code :

To Change the Text color :

To Change the close button :

// This excerpt is from Android source code (SearchView.java)

If it resides in toolbar, set theme for toolbar. For example this makes the text(and icon) white

I’m not unsure of why I’m getting this error. Here’s the menu in question:

Here’s the searchable configuration as per the developer guide.

Added to my manifest file:

I also have an intent handler in the new search activity. Why is this error showing up? My min sdk is 11.

В настоящее время я изучаю, как конвертировать свое приложение в Material Design, и сейчас я немного застрял. У меня есть панель инструментов, и я сделал свой навигационный ящик наложением всего содержимого.

Теперь я пытаюсь создать расширяемый поиск, который похож на тот, который содержится в основных принципах :

Это то, что у меня есть прямо сейчас, и я не могу понять, как сделать это как выше:

Это мое меню xml:

Это работает, я получаю элемент меню, который расширяется до SearchView, и я могу фильтровать свой список в порядке. Однако это не похоже на 1-ю картинку.

Я попытался использовать MenuItemCompat.setOnActionExpandListener() на R.id.action_search чтобы я мог изменить значок дома на стрелку назад, но это, похоже, не работает. Ничего не увольняют слушателя. Даже если бы это сработало, все равно было бы не очень близко к 1-му изображению.

Как создать SearchView в новой панели инструментов appcompat, которая выглядит как руководство по материалам?

На самом деле это довольно легко сделать, если вы используете библиотеку android.support.v7 .

Шаг 1

Объявить пункт меню

Шаг 2

Расширьте AppCompatActivity и в onCreateOptionsMenu настройте SearchView.

результат

Через неделю это озадачило. Кажется, я понял это.
Теперь я использую только EditText внутри панели инструментов. Это было предложено мне oj88 по reddit.

У меня теперь есть следующее:

Сначала внутри onCreate () моей активности я добавил EditText с изображением справа на панели инструментов следующим образом:

Это сработало, но потом я столкнулся с проблемой, когда onOptionsItemSelected () не вызывался, когда я постучал по домашней кнопке. Поэтому я не смог отменить поиск, нажав кнопку «Домой». Я попробовал несколько разных способов регистрации прослушивателя кликов на домашней кнопке, но они не сработали.

В конце концов я узнал, что у ActionBarDrawerToggle у меня было вмешательство в дела, поэтому я удалил его. Затем слушатель начал работать:

Поэтому теперь я могу отменить поиск кнопкой «домой», но я не могу нажать кнопку «Назад», чтобы отменить ее. Поэтому я добавил это в onBackPressed ():

Я создал этот метод для переключения видимости EditText и пункта меню:

Мне нужен был способ переключить кнопку «Дом» на панели инструментов между значком ящика и кнопкой «Назад». В конце концов я нашел метод ниже в этом ответе SO . Хотя я немного изменил его, чтобы иметь больше смысла для меня:

Это работает, мне удалось выработать несколько ошибок, которые я нашел на этом пути. Я не думаю, что это 100%, но для меня это работает достаточно хорошо.

EDIT: если вы хотите добавить представление поиска в XML вместо Java, выполните следующие действия:

OnCreate () вашей деятельности:

Я знаю его старую нить, но все равно публикую только что созданную библиотеку. Надеюсь, это может помочь кому-то.

Первый скриншот в вашем вопросе не является общедоступным. Поддержка SearchView ( android.support.v7.widget.SearchView ) имитирует SearchView для Android 5.0 Lollipop ( android.widget.SearchView ). Второй скриншот используется другими приложениями, разработанными на основе материалов, такими как Google Play.

SearchView в вашем первом скриншоте используется на Диске, YouTube и других закрытых источниках Google Apps. К счастью, он также используется в Android 5.0 Dialer . Вы можете попытаться выполнить резервное копирование представления, но оно использует некоторые API 5.0.

Классы, которые вы хотите посмотреть:

SearchEditTextLayout , AnimUtils и DialtactsActivity, чтобы понять, как использовать представление. Вам также понадобятся ресурсы из ContactsCommon .

Вот моя попытка сделать это:

Шаг 1. Создайте стиль с именем SearchViewStyle

Шаг 2. Создайте макет с именем simple_search_view_item.xml

Шаг 3. Создайте пункт меню для этого вида поиска.

Шаг 4: Надуйте меню

Результат:

Единственное, что мне не удалось сделать, это заполнить всю ширину Toolbar . Если кто-то может помочь мне сделать это, тогда это будет золотым.

Чтобы добиться желаемого вида SearchView, вы можете использовать стили.

Во-первых, вам нужно создать style для вашего SearchView, который должен выглядеть примерно так:

Полный список атрибутов, которые вы можете найти в этой статье, в разделе «SearchView».

Во-вторых, вам нужно создать style для вашей Toolbar , который используется как ActionBar:

И, наконец, вам необходимо обновить атрибут темы панели инструментов следующим образом:

ПРИМЕЧАНИЕ. Вам необходимо напрямую изменить атрибут темы Toolbar . Если вы просто обновите свой основной атрибут searchViewStyle это не повлияет на вашу Toolbar .

Другой способ добиться желаемого эффекта – использовать эту библиотеку просмотра материалов . Он автоматически обрабатывает историю поиска и позволяет также предлагать предложения поиска.

Пример: (Это показано на португальском языке, но оно также работает на английском и итальянском языках).

Настроить

Прежде чем вы сможете использовать эту библиотеку, вы должны реализовать класс с именем MsvAuthority внутри пакета br.com.mauker в вашем модуле приложения, и он должен иметь общедоступную статическую переменную String, называемую CONTENT_AUTHORITY . Дайте ему нужное значение и не забудьте добавить одно и то же имя в файл манифеста. Lib будет использовать этот файл для установки полномочий поставщика контента.

Пример:

MsvAuthority.java

AndroidManifest.xml

Применение

Чтобы использовать его, добавьте зависимость:

И затем в файле макета Activity добавьте следующее:

После этого вам просто нужно получить ссылку MaterialSearchView с помощью getViewById() и открыть ее или закрыть ее с помощью MaterialSearchView#openSearch() и MaterialSearchView#closeSearch() .

PS: Можно открывать и закрывать представление не только с Toolbar . Вы можете использовать метод openSearch() основном, любую Button , например плавучую кнопку действия.

Вы также можете закрыть представление с помощью кнопки «Назад», выполнив следующие действия:

Для получения дополнительной информации о том, как использовать lib, проверьте страницу github .

Оцените статью