SearchView в расширенном режиме не скрывает все значки панели действий, начиная с Зефира - PullRequest
0 голосов
/ 01 июня 2019

SearchView отлично выглядит на устройствах Lollipop (Android 21):

enter image description here

enter image description here

Но на Android 23-28 он не скрывает все значки с правой стороны:

enter image description here

enter image description here

<item android:id="@+id/action_search"
      android:title="@string/search"
      app:actionViewClass="androidx.appcompat.widget.SearchView"
      app:showAsAction="ifRoom"/>

<item android:id="@+id/action_sort"
      android:title="@string/sorting"
      android:icon="@drawable/sort"
      app:showAsAction="ifRoom"/>

Как это исправить?

Обновление

Кажется, Android 23 и выше больше не скрывают значки справа (потому что естьдостаточно места)

Но он работает нормально только в том случае, если у вас нет домашней кнопки или меню гамбургера слева:

enter image description here

enter image description here

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

enter image description here

enter image description here

Должна быть ошибка в новейшем дизайне Android ActionBar ...

Я добавляю кнопку меню следующим образом:

supportActionBar?.let {
    it.setDisplayHomeAsUpEnabled(true)
    it.setHomeAsUpIndicator(R.drawable.ic_menu)
}

1 Ответ

0 голосов
/ 02 июня 2019

Мое решение состоит в том, чтобы программно скрыть кнопку слева (домой / меню) при развертывании SearchView:

val searchItem = menu.findItem(R.id.action_search)

val searchView = searchItem.actionView as SearchView

searchView?.setOnSearchClickListener {
    supportActionBar?.setDisplayHomeAsUpEnabled(false)
}
searchView?.setOnCloseListener {
    supportActionBar?.setDisplayHomeAsUpEnabled(true)
    false
}

ps следующий метод не сработал для меня, потому что он работает, только еслиВаш SearchView всегда расширяется (помечен как collapseActionView), но я не хочу, чтобы в моем приложении были такие странные вещи (это не приложение поиска, функция поиска - просто дополнительная функция):

searchItem.setOnActionExpandListener(object: MenuItem.OnActionExpandListener {
    override fun onMenuItemActionExpand(item: MenuItem?): Boolean {
        supportActionBar?.setDisplayHomeAsUpEnabled(false)
        return true
    }

    override fun onMenuItemActionCollapse(item: MenuItem?): Boolean {
        supportActionBar?.setDisplayHomeAsUpEnabled(true)
        return true
    }
})

Закрыто:

enter image description here

Расширен:

enter image description here

...