我看到设置动作模式“完成”/“关闭”按钮的文本颜色。这就是我尝试过的:
<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>
但没有效果。
请注意,在JB上,我将ActionModeCloseButton
样式的父级设为常规全息主题就足够了。它在那里工作正常(甚至没有textColor
设置)。
有什么想法吗? 感谢。
答案 0 :(得分:6)
首先,textview“Done”仅在大型设备上可见。
Android源代码中的结帐action_mode_close_item.xml
。
因此android:actionModeCloseButtonStyle
仅适用于包含视图,而不适用于imageview和textview。
幸运的是,Android工程师使用可公开访问的属性来设置子视图的样式。
android:actionMenuTextColor
更改为TextView的textColor。android:actionModeCloseDrawable
更改ImageView 示例:
<style name="MyTheme">
<item name="android:actionMenuTextColor">#ff000000</item>
<item name="android:actionModeCloseDrawable">@drawable/my_close_drawable</item>
</style>
以下是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>
答案 1 :(得分:0)
由于动作模式关闭按钮的布局未提供文本视图的颜色属性,因此无法在自定义主题中设置此颜色。相反,我找到的唯一一个是覆盖我派生的onPrepareActionMode()
类的ActionMode
方法中的文本颜色:
@Override
public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
new AsyncTask<Void, Void, Void>() {
@Override
protected Void doInBackground(Void... none) {
try {
Thread.sleep(100);
} catch (InterruptedException e) {
}
return null;
}
@Override
protected void onPostExecute(Void none) {
if (activity != null) {
LinearLayout layout = (LinearLayout) activity
.findViewById(R.id.abs__action_mode_close_button);
if (layout == null) {
int id = Resources.getSystem().getIdentifier(
"action_mode_close_button", "id", "android");
layout = (LinearLayout) activity.findViewById(id);
}
if (layout != null && layout.getChildCount() > 1) {
TextView label = (TextView) layout.getChildAt(1);
if (label != null) label.setTextColor(Color.RED);
}
}
}
}.execute();
return false;
}
使用Android 4.0之前和之后的两个设备。