Как открыть программу SearchView программно?

Этот виджет для ActionBar называется «SearchView». Когда он не используется, он выглядит так:

enter image description here

И когда он используется, он выглядит так:

enter image description here

Я хочу (программно, конечно) открыть searchview (сделать его «в использовании»).

Я пробовал несколько функций, таких как:

SearchView searchView = (SearchView) menu.findItem(R.id.menu_search).getActionView();
    searchView.setOnQueryTextListener(this);

    searchView.performClick();
    searchView.requestFocus();

Но никто из них не работал ...

SearchView в XML:


85
nl ja de

4 ответы

Разверните SearchView с помощью

searchView.setIconified(false);

и свернуть его с помощью

searchView.setIconified(true);

Вам нужно изменить значение android: showAsAction из ifRoom | collapseActionView в always . Атрибут SearchView android: iconifiedByDefault должен быть true , который является значением по умолчанию, иначе пользователь не может свернуть SearchView после того, как он был расширен программно.

206
добавлено
Не используйте это и используйте решение, указанное в ответе @ qbait ( searchMenuItem.expandActionView() ). Установка showAsAction = "always" вызывает несколько проблем (как указано выше).
добавлено автор Ixx, источник
showAsAction = "always" заставляет значок поиска оставаться на панели действий при его расширении, который не похож на внешний вид при ручной фокусировке.
добавлено автор Ixx, источник
Человек, ты мой король-герой
добавлено автор Eliseo Ocampos, источник
Почему так называемая иконированная.
добавлено автор Denny, источник
Хорошо, я немного удивлен, работает на меня. searchView.onActionViewExpanded() должен работать. Если нет, можете ли вы показать свой menu.xml?
добавлено автор Matthias Robbers, источник
Теперь он должен работать для вас!
добавлено автор Matthias Robbers, источник
@Matthias Разбойники работали как шарм, спасибо!
добавлено автор Ahmad Ali Nasir, источник
MenuItemCompat.expandActionView (MenuItem); работает
добавлено автор Tigran Sarkisian, источник
Только это решение из многих работало для меня.
добавлено автор Vishal Kumar, источник
У меня есть один запрос, как показать карету, кроме значка приложения, когда searchView расширяется и скрывает каретку, когда searchView сжимается?
добавлено автор Ram Patra, источник
android: showAsAction = «всегда», это важно для меня.
добавлено автор wangqi060934, источник
Я попробовал снова открыть searchView во время onResume() с предоставленным методом, который был слишком ранним. Элементы OptionMenu в то время не установились. Использование onPrepareOptionsMenu() отлично сработало для меня.
добавлено автор Capricorn, источник
showAsAction = "always" будет отображать уродливую полноэкранную панель поиска, хотя после вращения
добавлено автор Francesco Gabbrielli, источник
Привет, это тоже не сработало. Я обновил сообщение с исходным кодом XML.
добавлено автор Eli Revah, источник
Привет, клавиатура всплывает, но SearchView не открывается.
добавлено автор Eli Revah, источник
@ Ели, можете ли вы рассказать мне, как вы это сделали? », Клавиатура всплывает, но SearchView не открывается». Даже если я столкнулся с той же проблемой
добавлено автор srinivas, источник

Попробуйте вызвать expandActionView() в MenuItem, а не onActionViewExpanded() в ActionView.

Меня устраивает.

MenuItem searchMenuItem = menu.findItem(R.id.menu_search);
searchView = (SearchView) searchMenuItem.getActionView();
searchMenuItem.expandActionView();
62
добавлено
Это правильное решение. Выбранный параметр заставляет вас установить showAsAction: always , что вызывает некоторые проблемы.
добавлено автор Ixx, источник
Работал и для меня
добавлено автор android, источник
Это работает, когда у вас есть сворачиваемый вид действия.
добавлено автор C Nick, источник
Работает отлично, но только для API> 14. Для более раннего API вы можете использовать это: MenuItemCompat.expandActionView (searchMenuItem);
добавлено автор Andrei Aulaska, источник
Это сработало для меня!
добавлено автор paradite, источник

Если вы хотите использовать библиотеку поддержки только в случае необходимости, сделайте это

    MenuItem searchMenuItem = menu.findItem(R.id.action_search);
    if (Utils.hasIceCreamSandwich())
        searchMenuItem.expandActionView();
    else MenuItemCompat.expandActionView(searchMenuItem);

иначе просто сделайте это

    MenuItem searchMenuItem = menu.findItem(R.id.action_search);
    MenuItemCompat.expandActionView(searchMenuItem);
11
добавлено

Я знаю, что это поздно, но

Попробуйте вызвать expandActionView (), чтобы открыть его и свернутьActionView (), чтобы закрыть его. Вы можете вызвать requestFocus() в действительном представлении действий через getActionView (), чтобы получить фокус поиска. :)

6
добавлено
Mobile Dev Jobs — вакансии и аналитика
Mobile Dev Jobs — вакансии и аналитика
6 187 участник(ов)

Публикуем вакансии и запросы на поиск работы по направлению iOS, Android, Xamarin и т.д. ВАЖНО: Правила публикации и правила канала: Ссылка – https://telegra.ph/Pravila-oformleniya-vakansij-i-rezyume-11-09-2

Android Developers
Android Developers
4 476 участник(ов)

Общаемся на темы, посвященным Android-разработке, SDK, Kotlin, Realm и т.д.

pro.jvm
pro.jvm
3 503 участник(ов)

Сообщество разработчиков Java Scala Kotlin Groovy Clojure Чат для нач-их: @javastart Наш сайт: projvm.com projvm.ru Наш канал: @proJVM Вакансии: @jvmjobs Конфы: @jvmconf

Java & Co
Java & Co
2 370 участник(ов)

Можно обсуждать с матом и без всё, что касается жабы, вплоть до холиваров. НЕ ИМЕЕТ ОТНОШЕНИЯ К САЙТУ JAVARUSH.RU ПРАВИЛА - https://t.me/javarush/75723 Вакансии сюда - https://telegram.me/joinchat/B7IzvUCnfo6d8t3yIxKguQ По вопросам - @thedude

Android Architecture
Android Architecture
2 186 участник(ов)

Русскоязычный чат по архитектуре в андроид приложениях. Подробнее: http://telegra.ph/Android-Architecture-12-24

learn.java
learn.java
1 888 участник(ов)

Чат для начинающих и не только Статистика: https://combot.org/chat/-1001083535868 Основной чат - @jvmchat

rus-speaking/android
rus-speaking/android
1 705 участник(ов)

Основной чат по Android разработке (вопрос-ответ). ПРАВИЛА: bit.ly/andr-rules. NEWS: bit.ly/AnrdResId ЧАТЫ: Основной: bit.ly/andr-main IDE, сборка, Git, сервисы: bit.ly/andr-tools Оффтоп: bit.ly/andr-offtop Конференции, события: bit.ly/andr-events Вакансии, найм: bit.ly/andr-job Архитектура: bit.ly/andr-patterns Rx: bit.ly/andr-rx Тестирование: bit.ly/andr-test Kotlin: bit.ly/andr-kotlin Хаmarin: bit.ly/andr-xamarin За мат, спам, агрессию, предложения о работе, оффтоп в этом канале - бан на сутки и более ☢☢☢

Android Dev Подкаст
Android Dev Подкаст
1 325 участник(ов)

Комната для обсуждения Android Dev подкаста apptractor.ru/AndroidDev/ Общее обсуждение Android: https://t.me/android_ru Остальные чаты про Android: http://t.me/devChats Наши новости https://t.me/androiddevpodcast_news

Android Guards
Android Guards
602 участник(ов)

Обсуждение любых вопросов касающихся безопасности Android. - Защита системы и приложений - Уязвимости и эксплойты - Вредоносное ПО - Копание в кишках системы и приложений (RE)

Android JOB
Android JOB
466 участник(ов)

Публикуем вакансии и запросы на поиск работы по направлению Android (full-time, part-time, remote и разовые подработки)

AndroidDev :: Разработка. It's Android time now!
AndroidDev :: Разработка. It's Android time now!
458 участник(ов)

It's Android time now! Чат разработчиков Android. Вакансии, резюме и информацию о митапах размещать можно. Публикацию скрытой и явной рекламы ваших каналов и сайтов после получения разрешения от @olegushakov

Aandroid Talks!
Aandroid Talks!
212 участник(ов)

Чат об общих вопросах по ОС Android. Чат для разработки под андроид - pro.android: https://t.me/joinchat/AAAAAEKIFKnmRT9cMebb9w

Java Underground
Java Underground
169 участник(ов)

https://vk.com/javatutorial

Javanese Questions
Javanese Questions
109 участник(ов)

Чат предназначен для обмена знаниями строго в формате в вопрос-ответ. Тема — Java, Kotlin и Android. Вопрос должен быть предварительно прогуглен, понятно и грамотно сформулирован, помечен хэштегами. Ответ — тем более. Куски кода размером в несколько строк можно писать прямо здесь, для больших кусков кода стоит использовать http://gist.github.com/, http://pastebin.com/, https://codeshare.io/ или любой аналогичный сервис. В некоторых случаях можно прикреплять скриншоты. Стикеры и гифки запрещены. Дополнять и уточнять вопросы и ответы — редактированием исходного сообщения. Обсуждения должны приводить к редактированию вопроса/ответа и удаляться. По хештегам можно искать существующие вопросы и овтеты: #вопрос #ответ #git #generics #java #server #awt #javafx #swing #kotlin #anko #tornadofx #ktor #android #recyclerView #performance #arch #network #permissions #storage #async

Android Rus
Android Rus
68 участник(ов)