动作模式关闭按钮文本颜色

Jef*_*man 11 android android-actionbar

我看到设置动作模式"完成"/"关闭"按钮的文本颜色.这就是我尝试过的:

<item name="android:actionModeCloseButtonStyle">@style/ActionModeCloseButton</item>
....
<style name="ActionModeCloseButton" parent="android:style/Widget.Holo.ActionButton.CloseMode">
    <item name="android:textColor">@android:color/white</item>
</style>
Run Code Online (Sandbox Code Playgroud)

但是没有效果.

在此输入图像描述

请注意,在JB上,我将ActionModeCloseButton样式的父级设为常规全息主题就足够了.它在那里工作正常(没有textColor设置甚至).

有任何想法吗?谢谢.

Jel*_*lle 6

首先,textview"Done"仅在大型设备上可见.action_mode_close_item.xml在Android源代码中结帐.因此,android:actionModeCloseButtonStyle仅适用于包含视图,而不适用于imageview和textview.

幸运的是,Android工程师使用可公开访问的属性来设置子视图的样式.

  • 使用android:actionMenuTextColor切换到TextView中的文字颜色.
  • 使用android:actionModeCloseDrawable改变的ImageView的绘制

例:

<style name="MyTheme">
    <item name="android:actionMenuTextColor">#ff000000</item>
    <item name="android:actionModeCloseDrawable">@drawable/my_close_drawable</item>
</style>
Run Code Online (Sandbox Code Playgroud)

下面是-folder action_mode_close_item.xml中的layout-large副本,您可以在其中查看如何构建布局.

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/action_mode_close_button"
        android:focusable="true"
        android:clickable="true"
        android:paddingStart="8dip"
        style="?android:attr/actionModeCloseButtonStyle"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_marginEnd="16dip">
    <ImageView android:layout_width="48dip"
               android:layout_height="wrap_content"
               android:layout_gravity="center"
               android:scaleType="center"
               android:src="?android:attr/actionModeCloseDrawable" />
    <TextView android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:layout_gravity="center"
              android:layout_marginStart="4dip"
              android:layout_marginEnd="16dip"
              android:textAppearance="?android:attr/textAppearanceSmall"
              android:textColor="?android:attr/actionMenuTextColor"
              android:textSize="12sp"
              android:textAllCaps="true"
              android:text="@string/action_mode_done" />
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)