Невозможно настроить режим действия при использовании панели инструментов

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

Я могу успешно использовать ActionBar, используя одну из доступных тем. Это также позволяет мне описывать ActionMode. Все работает отлично, как ожидалось. Вот как я это делаю.

<style name="Theme.ActionBar" parent="@style/Theme.AppCompat.Light.DarkActionBar"> <item name="actionModeBackground">@drawable/action_mode_background</item> </style> 

Теперь я ищу немного большую гибкость, поэтому я пытаюсь использовать новую панель инструментов из библиотеки поддержки. Совершенствование панели инструментов реализовано и работает отлично, однако теперь режим действия больше не работает так, как ожидалось. Пользовательский фон не работает и панель режима действия нажимает панель инструментов вниз.

Чтобы исправить проблему с нажатием, я использовал флаг windowActionModeOverlay . Для меня тот факт, что режим действия не входит в панель инструментов, засасывает …: /

 <style name="Theme.ActionBar" parent="@style/Theme.AppCompat.Light.DarkActionBar"> <item name="windowActionBar">false</item> <item name="windowActionModeOverlay">true</item> <item name="actionModeBackground">@drawable/action_mode_background</item> </style> 

В моей деятельности я делаю следующее, чтобы сделать панель инструментов по умолчанию ActionBar.

 Toolbar toolbar = (Toolbar) findViewById(R.id.toolBar); setSupportActionBar(toolbar); 

Прямо сейчас я пробовал так много всего. Я даже попытался погрузиться в источник, чтобы выяснить, что происходит.

Есть идеи, почему это происходит? Как я могу создать ActionMode? Или более конкретно, как я могу изменить фон ActionMode?


Обновление 1
Я заметил, что при добавлении в тему активности <item name="windowActionBar">false</item> режим действия теряет свою тему против того, чтобы она была истиной. Очевидно, что установка этого значения будет включать в себя панель действий окна.


Обновление 2
Я смог правильно настроить режим действия, используя пару модов.

  1. Фон режима действия. Оказывается, вы просто устанавливаете фон непосредственно на тему ActionMode в качестве андроида: фон! Кроме того, текст, который вам нужно указать на тему.

    <item name="actionModeStyle">@style/Widget.ActionMode</item>
    <style name="Widget.ActionMode" parent="@style/Widget.AppCompat.ActionMode"> <item name="android:background">@drawable/action_mode_background</item> <item name="titleTextStyle">@style/TitleTextStyle</item> </style>

  2. Обратная стрелка не получает стиля. Я перезаписал использованную для рисования и просто добавил свой собственный в белый цвет.
    <item name="actionModeCloseDrawable">@drawable/ic_arrow_back_white_24dp</item>

Solutions Collecting From Web of "Невозможно настроить режим действия при использовании панели инструментов"

Ну, наконец, я смог правильно создать режим действия после того, как вы выкапывали некоторые стили, темы, attrs и код из библиотеки поддержки.

Прежде чем я предоставлю решение по моему вопросу, я должен упомянуть, что в библиотеке поддержки есть ошибка. Похоже, что эта функция отключена, когда вы скрываете панель действий окна. Я сообщил об ошибке, чтобы узнать, исправляют ли они это или предоставляют более подробную информацию.

Таким образом, решение заключалось в том, чтобы по существу стилизовать фон, текст и закрыть значок сам. Для этого нужно использовать мой собственный стиль ActionMode и изменить указатель атрибута на значок закрытия.

themes.xml

 <style name="Theme.Main.Home"> <item name="windowActionModeOverlay">true</item> <item name="actionModeStyle">@style/Widget.ActionMode</item> <item name="actionModeCloseDrawable">@drawable/ic_arrow_back_white_24dp</item> </style> 

styles.xml

 <style name="Widget.ActionMode" parent="@style/Widget.AppCompat.ActionMode"> <item name="android:background">@drawable/action_mode_background</item> <item name="titleTextStyle">@style/TitleTextStyle</item> </style> 
  • Задний план
    Это было сложно, потому что actionModeBackground не работает для установки фона режима действия. Вы должны изменить фон с помощью стандартного android:background в стиле ActionMode.
  • Текст заголовка
    Простое предоставление общего стиля для titleTextStyle позволило изменить цвет текста.
  • Закрыть значок
    actionModeCloseDrawable значки материалов и добавили иконку close my, используя actionModeCloseDrawable attr.