Подтвердить что ты не робот

Styling ActionMode ActionBar в Android 5.0 Lollipop (с AppCompat)

Я использовал этот учебник для облегчения моего приложения Holo для Lollipop: http://android-developers.blogspot.ru/2014/10/appcompat-v21-material-design-for-pre.html

Что у меня:

  • Тема

    <style name="MyTheme" parent="Theme.AppCompat.Light.NoActionBar">
      <item name="windowActionModeOverlay">true</item>
      <item name="colorPrimary">@color/theme_primary</item>
      <item name="colorPrimaryDark">@color/theme_primary_dark</item>
      <item name="colorAccent">@color/theme_accent</item>
    </style>
    
  • Макет панели инструментов

    <android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:app="http://schemas.android.com/apk/res-auto"
      android:id="@+id/toolbar"
      android:layout_height="wrap_content"
      android:layout_width="match_parent"
      android:minHeight="?attr/actionBarSize"
      android:background="?attr/colorPrimary"
      app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
      app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />
    
  • Активность, унаследованная от ActionBarActivity с фрагментом ListFragment в режиме множественного выбора

    getListView().setChoiceMode(ListView.CHOICE_MODE_MULTIPLE_MODAL);

Результат: панель инструментов в порядке. Он использует выделенные цвета темы, но ActionBar, используемый ListFragment в ActionMode (активированный нажатием и удержанием элемента списка), имеет стандартные цвета Dark.ActionBar. Также всплывающее меню панели действий использует темную тему.

Я пробовал все трюки SO, но до сих пор не могу это решить. Я буду признателен за любую помощь.

BTW. Я обнаружил, что темные цвета ActionBar вызваны панелью инструментов app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar", но понятия не имею, как решить эту проблему, потому что этот атрибут необходим для правильного внешнего вида панели инструментов.

Toolbar with correct colorsDark ActionBar

4b9b3361

Ответ 1

Просто добавьте эти две строки в тему:

<item name="actionModeBackground">@color/theme_primary_dark</item>
<item name="actionBarPopupTheme">@style/ThemeOverlay.AppCompat.Light</item>

Ответ 2

Это может быть полезно в дополнение к @Андрею Щербакову ответить, если вы хотите иметь больший контроль над каждым цветом.

<!-- action bar title text color, icon color (ie: back icon, icons when editing text)-->
<item name="android:textColorPrimary">#FFFF00</item>

<!-- action bar background color-->
<item name="android:colorBackground">#444400</item>

<!-- color of line under contextual action bar-->
<item name="colorControlActivated">#00CC00</item>