Как я могу настроить цвет и текст Action Mode? - PullRequest
22 голосов
/ 02 июля 2011

Режим действий по умолчанию (3.0 и выше) поставляется с зеленой темой и кнопкой «Готово» на левой стороне. Как я могу настроить их?

Спасибо

Ответы [ 8 ]

32 голосов
/ 27 декабря 2011

Это стиль, используемый для любого ActionMode, я вытащил его из SDK.Вам нужно будет создать свой собственный стиль, чтобы настроить его.Это действительно легко сделать.Если вы никогда не делали ничего подобного, прочитайте этот пост по настройке ActionBar.Это объясняет все, что вам нужно знать.

    <style name="Widget.ActionMode">
    <item name="android:background">?android:attr/actionModeBackground</item>
    <item name="android:backgroundSplit">?android:attr/actionModeSplitBackground</item>
    <item name="android:height">?android:attr/actionBarSize</item>
    <item name="android:titleTextStyle">@android:style/TextAppearance.Widget.ActionMode.Title</item>
    <item name="android:subtitleTextStyle">@android:style/TextAppearance.Widget.ActionMode.Subtitle</item>
    </style>
23 голосов
/ 18 февраля 2014

Решение для моего приложения

<style name="AppTheme" parent="@android:style/Theme.Holo.Light">
    <item name="android:actionModeBackground">@color/bg_action_bar</item>
</style>
10 голосов
/ 23 апреля 2015

с помощью этого кода вы можете изменить цвет фона в режиме действий, а также изменить выполненное изображение.Примечание: вы также можете добавить свой текст в изображение!в res / styles.xml:

<style name="AppTheme" parent="android:Theme.Holo">
<item name="android:actionModeBackground">@android:color/white</item>
<item name="android:actionModeCloseDrawable">@drawable/plus</item>

7 голосов
/ 27 февраля 2017

работал над моим проектом

 <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
        <item name="actionModeStyle">@style/CustomActionModeStyle</item>
 </style>

Пользовательский стиль ActionMode

<style name="CustomActionModeStyle" parent="Base.Widget.AppCompat.ActionMode">
        <item name="background">@color/color_primary</item>
        <item name="titleTextStyle">@style/CustomeActionModeTextStyle</item>
</style>

Пользовательский заголовок ActionMode

<style name="CustomeActionModeTextStyle" parent="TextAppearance.AppCompat.Widget.ActionMode.Title">
    <item name="android:textSize">16sp</item>
    <item name="android:textColor">@color/color_primaryText</item>
</style>
2 голосов
/ 23 июля 2013

Вот мой подход с кодом Java:

private void customizeActionModeCloseButton(String title, int iconID) {
          int buttonId = Resources.getSystem().getIdentifier("action_mode_close_button", "id", "android");    
          View v = findViewById(buttonId);
          if (v == null) {
             buttonId = R.id.abs__action_mode_close_button;
             v = findViewById(buttonId);
          }
          if (v == null)
             return;
          LinearLayout ll = (LinearLayout) v;
          if (ll.getChildCount() > 1 && ll.getChildAt(1) != null) {
             //custom icon
             ImageView img = (ImageView) ll.getChildAt(0);
             img.setImageResource(iconID);
             //custom text
             TextView tv = (TextView) ll.getChildAt(1);
             tv.setText(title);
             tv.setTextColor(Color.WHITE);
          }
       }
2 голосов
/ 30 декабря 2011

Вы не можете настроить его таким образом, потому что атрибут actionModeStyle введен на уровне API 14. Для уровней API с 11 по 13 вам не повезло.стиль, установив Android: actionModeStyle в вашей теме.

1 голос
/ 11 октября 2016

Обновлен ответ для устройств до и после леденцов. Вы должны удалить префикс android :, чтобы он работал на устройствах Lollipop +, например:

styles.xml:

<style name="Widget.ActionMode">
    <item name="android:background">?android:attr/actionModeBackground</item>
    <item name="android:backgroundSplit">?android:attr/actionModeSplitBackground</item>
    <item name="android:height">?android:attr/actionBarSize</item>
    <item name="android:titleTextStyle">@android:style/TextAppearance.Widget.ActionMode.Title</item>
    <item name="android:subtitleTextStyle">@android:style/TextAppearance.Widget.ActionMode.Subtitle</item>
</style>

v21 / styles.xml:

<style name="Widget.ActionMode">
    <item name="background">?android:attr/actionModeBackground</item>
    <item name="backgroundSplit">?android:attr/actionModeSplitBackground</item>
    <item name="height">?android:attr/actionBarSize</item>
    <item name="titleTextStyle">@android:style/TextAppearance.Widget.ActionMode.Title</item>
    <item name="subtitleTextStyle">@android:style/TextAppearance.Widget.ActionMode.Subtitle</item>
</style>

Я бы также рекомендовал иметь ваш стиль с установленным parent="@style/Widget.AppCompat.ActionMode", чтобы вы наследовали атрибуты, которые вам не нужны, для переопределения.

0 голосов
/ 08 января 2015

Вот решение AppCompat (т.е. использующее startSupportActionMode) для временной настройки (настройки) изображения кнопки CAB done. Временно, так как желательно изменить его обратно, чтобы использовать его типичное изображение, чтобы при выборе Text Selection оно выглядело подходящим.

https://gist.github.com/coreform/36ed98f98668f2e90c6a

...