我正在寻找有关上下文操作栏 (CAB) 的样式信息。实际上我只需要更改文本的颜色..
从上面可以看出,这是使用标准的Theme.Holo.Light.DarkActionBar主题,所以我只需要将文本颜色设置为白色!
谁能指出我正确的方向?
我正在寻找有关上下文操作栏 (CAB) 的样式信息。实际上我只需要更改文本的颜色..
从上面可以看出,这是使用标准的Theme.Holo.Light.DarkActionBar主题,所以我只需要将文本颜色设置为白色!
谁能指出我正确的方向?
要更改上下文操作栏中文本的颜色/等:
public boolean onCreateActionMode(ActionMode mode, Menu menu) {
//mode.setTitle("Contextual Action Bar"); (replace this call)
TextView tv= (TextView)getLayoutInflater().inflate(R.layout.contextual_title, null);
tv.setText("Contextual Action Bar");
mode.setCustomView(tv);
其中 layout/contextual_title.xml 包含一个具有所需颜色/大小/样式等的 TextView
事实上,上下文操作栏中的几乎所有内容都可以设置样式。唯一的问题是搜索“上下文”这个词毫无用处。相关的样式特性都称为“actionMode...”。这是我使用的一些(在我的主题中定义。)
<item name="android:actionModeCloseDrawable">@drawable/check</item>
<item name="android:actionModeCutDrawable">@drawable/ic_menu_cut_holo_dark</item>
<item name="android:actionModeCopyDrawable">@drawable/ic_menu_copy_holo_dark</item>
<item name="android:actionModePasteDrawable">@drawable/ic_menu_paste_holo_dark</item>
<item name="android:actionModeSelectAllDrawable">@drawable/ic_menu_selectall_holo_dark</item>
<item name="android:actionModeBackground">@drawable/contextual</item>
<item name="android:actionModeCloseButtonStyle">@style/MyCloseButton</item>
<!-- these change the press backgrounds for the vanilla actionBar and for search -->
<item name="android:windowContentOverlay">@null</item>
<item name="android:selectableItemBackground">@drawable/bar_selector</item>
<item name="android:actionBarItemBackground">@drawable/bar_selector</item>
<!-- these were defined in platform/.../data/res/values/... but Eclipse didn't recognize them -->
<!--? item name="android:actionModeShareDrawable">@drawable/icon</item -->
<!--? item name="android:actionModeFindDrawable">@drawable/icon</item -->
<!--? item name="android:actionModeWebSearchDrawable">@drawable/icon</item -->
<!-- item name="android:actionModeBackground">@drawable/red</item -->
<!-- and finally -->
<style name="MyCloseButton" parent="android:style/Widget.ActionButton.CloseMode">
<item name="android:background">@drawable/bar_selector</item>
</style>
您可以轻松设置自己的文本编辑剪切/粘贴/复制/全选图标、条形背景和按图标时更改颜色的图标背景(上面的 bar_selector)。图标是 ImageView,而不是按钮,并且编辑 ID(和可按下的背景)附加到 ImageView 的父级(每个视图一个父级),这是一种“内部”类型。
永远不清楚样式中的什么地方——我在平台 Themes.xml 中找到了 selectableItemBackground 的位置,并复制并修改了指向的可绘制对象。
我对自己的问题发表了评论,这实际上是我使用的 android 版本中的一个错误(可能是 4.0 的早期版本)
这是描述的错误:http ://code.google.com/p/android/issues/detail?id=26008
如果您手动启动上下文操作模式,您可以在启动之前使用新主题调用 setTheme()(如果您想避免黑底黑字问题,可能是 Theme.AppCompat.Light.DarkActionBar)。如果您已经设置了活动的内容视图,这不会影响当前活动的主题。
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.my_activity_layout);
// these lines can occur anywhere so long as you've already
// called "setContentView()" on the activity. The theme
// you set here will apply to the action mode, but not to
// the activity.
setTheme(R.style.Theme_AppCompat_Light_DarkActionBar);
startSupportActionMode(myActionModeCallback);
}
它现在可以工作了,但是您必须在 values/styles.xml(不是 values-v#/styles.xml)中输入它并在一般(非 API 特定标签)中输入它
<!-- Application theme. -->
<style name="AppTheme" parent="AppBaseTheme">
<item name="android:actionModeCloseDrawable">@drawable/ic_launcher</item>
<!-- All customizations that are NOT specific to a particular API-level can go here. -->
</style>