it-swarm.com.ru

Как я могу настроить цвет и текст Action Mode?

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

Спасибо

22
Zsombor Erdődy-Nagy

Это стиль, используемый для любого 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>
32
adneal

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

<style name="AppTheme" parent="@Android:style/Theme.Holo.Light">
    <item name="Android:actionModeBackground">@color/bg_action_bar</item>
</style>
23
PleaseTwo

с помощью этого кода вы можете изменить цвет фона в режиме действия, а также изменить готовое изображение. Примечание: вы также можете добавить свой текст в изображение! в 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>

10
Mina Dahesh

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

 <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>
4
Jacky Pham

Вот мой подход с кодом 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
Nguyen Minh Binh

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

Для уровня API 14 вы можете изменить стиль, установив Android: actionModeStyle в своей теме.

2
Wu-Man

Обновленный ответ для устройств до и после леденцов. Вы должны удалить префикс 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", чтобы вы наследовали атрибуты, которые вам не нужны для переопределения.

1
Chantell Osejo

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

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

0
straya