如何自定义动作模式的颜色和文字?

时间:2011-07-02 09:16:44

标签: android android-actionbar android-3.0-honeycomb android-actionmode

默认操作模式(3.0及更高版本)左侧带有绿色主题和“完成”按钮。我该如何自定义这些?

由于

8 个答案:

答案 0 :(得分:32)

这是用于任何ActionMode的样式,我从SDK中取出它。您需要创建自己的样式来自定义它。这很容易做到。如果您之前从未做过这样的事情,那么您应该通过this post阅读自定义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>

答案 1 :(得分:23)

我的应用程序的解决方案

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

答案 2 :(得分:10)

使用此代码,您可以更改动作模式的背景颜色,还可以更改完成图像。注意:您也可以在图片中添加文字!在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>

答案 3 :(得分:4)

致力于我的项目

 <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 :(得分:2)

您无法以这种方式真正自定义,因为属性actionModeStyle是在API级别14引入的。对于API级别11到13,您运气不佳。

对于API级别14,您可以通过在主题中设置android:actionModeStyle来更改样式。

答案 5 :(得分:2)

这是我使用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);
          }
       }

答案 6 :(得分:1)

更新了Lollipop前后设备的答案。您必须删除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"的样式,这样您就可以继承您不关心覆盖的属性。

答案 7 :(得分:0)

这是一个AppCompat(即使用startSupportActionMode)解决方案,用于临时自定义(自定义)CAB完成按钮的图像。暂时因为它需要将其更改为使用它的典型图像,以便在文本选择开始时它看起来合适。

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