我在上下文操作栏(CAB)上查找样式信息。我只需要改变文本的颜色..
从上面可以看出,这是使用标准的 Theme.Holo.Light.DarkActionBar 主题,所以我只需要将文本颜色设置为白色!
有人能指出我正确的方向吗?
答案 0 :(得分:51)
要更改上下文操作栏中文本的颜色/等:
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)。图标是ImageViews,而不是按钮,编辑ID(和可按下的背景)附加到ImageView的父级(每个视图一个父级),这是一种“内部”类型。
从来都不清楚样式中的位置 - 我发现selectableItemBackground位于平台Themes.xml中,并复制并修改了指向的drawable。
答案 1 :(得分:4)
我在自己的问题上发表评论,这实际上是我使用的android版本中的一个错误(可能是4.0的早期版本)
这是描述的错误:http://code.google.com/p/android/issues/detail?id=26008
答案 2 :(得分:0)
如果您手动启动上下文操作模式,则可以在启动之前使用新主题调用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);
}
答案 3 :(得分:0)
现在可以使用了,但你必须在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>