Для ActionBar есть виджет, который называется SearchView. Когда он не используется, он выглядит так:
А когда он используется, это выглядит так:
Я хочу (программно, конечно) открыть окно поиска (сделать его «используемым»).
Я пробовал несколько функций, таких как:
SearchView searchView = (SearchView) menu.findItem(R.id.menu_search).getActionView();
searchView.setOnQueryTextListener(this);
searchView.performClick();
searchView.requestFocus();
Но ничего из этого не сработало ...
SearchView в XML:
<item android:id="@+id/menu_search"
android:title="Search"
android:icon="@drawable/ic_action_search"
android:showAsAction="ifRoom|collapseActionView"
android:actionViewClass="android.widget.SearchView" />
java
android
android-actionbar
Эли Рева
источник
источник
showAsAction="always"
заставляет значок поиска оставаться на панели действий при раскрытии, что не похоже на внешний вид при ручной фокусировке поиска.Попробуйте вызвать
expandActionView()
MenuItem, а не onActionViewExpanded () для ActionView.Меня устраивает.
источник
showAsAction: always
что вызывает некоторые проблемы.Если вы хотите использовать библиотеку поддержки только при необходимости, сделайте это
иначе просто сделай это
источник
Я знаю, что это поздно, но
Попробуйте вызвать expandActionView (), чтобы открыть его, и collapseActionView (), чтобы закрыть. Вы можете вызвать requestFocus () в фактическом представлении действия через getActionView (), чтобы предоставить фокус представления поиска :)
источник
Расширяя ответ Матиаса Робертса:
Я хотел, чтобы фрагмент списка сохранял значение поиска и устанавливал его после того, как пользователь вернется из другого фрагмента.
а для меню я сохраняю
always|collapseActionView
, иначе оно остается открытым, когда пользователь удаляет текст.источник
Чтобы открыть
searchView
хранилищеclose_button
в конце, используйте это вonCreate
: -источник