首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Android ActionMode样式,无法设置菜单项颜色

Android ActionMode是一种上下文操作栏,用于在用户选择某个项目或操作时显示相关操作选项。它通常用于多选模式或上下文操作。

在Android中,可以通过自定义样式来设置ActionMode的外观,包括菜单项的颜色。要设置菜单项的颜色,可以按照以下步骤进行操作:

  1. 创建一个自定义的样式(style)并继承自Widget.AppCompat.ActionMode。例如,在styles.xml文件中添加以下代码:
代码语言:xml
复制
<style name="CustomActionMode" parent="Widget.AppCompat.ActionMode">
    <item name="android:background">@color/action_mode_background</item>
    <item name="android:titleTextStyle">@style/CustomActionMode.TitleTextStyle</item>
    <item name="android:subtitleTextStyle">@style/CustomActionMode.SubtitleTextStyle</item>
    <item name="android:actionMenuTextColor">@color/action_mode_menu_text_color</item>
    <item name="android:actionModeCloseDrawable">@drawable/action_mode_close_icon</item>
</style>

<style name="CustomActionMode.TitleTextStyle" parent="TextAppearance.AppCompat.Widget.ActionMode.Title">
    <item name="android:textColor">@color/action_mode_title_text_color</item>
</style>

<style name="CustomActionMode.SubtitleTextStyle" parent="TextAppearance.AppCompat.Widget.ActionMode.Subtitle">
    <item name="android:textColor">@color/action_mode_subtitle_text_color</item>
</style>

在上述代码中,我们定义了一个名为CustomActionMode的样式,并设置了背景颜色、标题和副标题的文本颜色,以及菜单项的文本颜色和关闭按钮的图标。

  1. 在Activity或Fragment中启用自定义的ActionMode样式。在onCreate()方法中添加以下代码:
代码语言:java
复制
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    // ...
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_close);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.menu_action_mode, menu);
    return true;
}

@Override
public boolean onPrepareOptionsMenu(Menu menu) {
    // 设置ActionMode样式
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
        Context context = getSupportActionBar().getThemedContext();
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.menu_action_mode, menu);
        if (menu != null) {
            for (int i = 0; i < menu.size(); i++) {
                MenuItem item = menu.getItem(i);
                SpannableString spannableString = new SpannableString(item.getTitle());
                spannableString.setSpan(new ForegroundColorSpan(ContextCompat.getColor(context, R.color.action_mode_menu_text_color)), 0, spannableString.length(), 0);
                item.setTitle(spannableString);
            }
        }
    }
    return super.onPrepareOptionsMenu(menu);
}

在上述代码中,我们通过onPrepareOptionsMenu()方法来设置菜单项的文本颜色。我们使用SpannableString来设置菜单项的文本颜色,并通过ForegroundColorSpan来指定颜色。

  1. 创建一个名为menu_action_mode.xml的菜单资源文件,并在其中定义ActionMode的菜单项。例如:
代码语言:xml
复制
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:id="@+id/action_delete"
        android:title="Delete"
        android:icon="@drawable/ic_delete" />
    <item
        android:id="@+id/action_share"
        android:title="Share"
        android:icon="@drawable/ic_share" />
</menu>

在上述代码中,我们定义了两个菜单项,分别是删除和分享。

通过以上步骤,我们可以自定义ActionMode的样式,并设置菜单项的颜色。请注意,上述代码中的颜色值可以根据实际需求进行修改。

推荐的腾讯云相关产品和产品介绍链接地址:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

android 设置系统dialog 样式

1、编写一个文本样式。 DIALOG的标题是一个textview,在sytles.xml中,添加如下代码来设置你自己的文本样式:   ?   ...上面的标题文本并不能直接设置为对话框的标题样式。 我们还需要编写一个表示标题的主题的style,在这里指定标题的文本样式。代码如下:   ?   ...我们无法直接继承系统主题里的AlertDialog的style。...如果你修改了对话框的主题颜色,那么标题下面的蓝色的线肯定会让你很郁闷。如果对话框较少,你可以选择隐藏标题,然后自定义一个包含了标题的View来设置为对话框的内容。...表示这条蓝色的线的叫做titleDivider,我们可以通过getResources()的API来获取它的IP,然后设置颜色。代码如下:   ?

1.3K20

Android 禁止应用颜色跟随深色模式设置

,发现应用中的部分文字从默认颜色变为了白色,CardView从白色变成了黑色(大多数文字和组件颜色没有变化),丑到爆了 很容易发现有变化的文字是因为没有设置textcolor,于是给他们加上之后,又给所有的...cardview设置了background,但是发现文字不会改变,但cardview依然会变成深色。。...赶紧看了一下文档 https://developer.android.google.cn/guide/topics/ui/look-and-feel/darktheme, 希望能有禁用深色模式的方法,但根据文档里的意思...,应用应该默认不会跟随系统的深色模式呀,只有手动设置后才会跟随深色模式。...image.png 去看了一下styles文件,果然被设置过了 修改了一下 <style

4K40

Android Studio设置颜色拾色器工具Color Picker教程

你可能下载过一些获取颜色值的一些小工具, 这种方式获取颜色,需要先切换窗口转跳到桌面,然后打开拾色器小工具程序,然后去拾取颜色; 你可能也知道Android Studio自带一个颜色拾色器,通过下面这种方式才能找到...答案是肯定的,不然这些个干嘛~~ 不用向上面那样去打开拾色器小工具程序,不用在特定的窗口点击特定的位置弹出拾色器工具,是用我们最喜欢的快捷键的方式打开 Android Studio自带了颜色拾色器工具,...但是它没有设置快捷键,也没有告诉我们, 这才是问题, 不罗嗦了,跟着下面的设置设置快捷键吧 ?...补充知识:Android 自定义一个简版的取色器ColorPicker 最近在一个项目中要用到修改颜色功能,于是搜索了一波android自定义取色器,虽然搜索结果很多,但是都不是令人十分满意(可能是用久了...onColorChangeListener) { this.onColorChangeListener = onColorChangeListener; } } 以上这篇Android Studio设置颜色拾色器工具

1.4K41

速读原著-Android应用开发入门教程(样式设置)

6.7 样式设置Android 中,应用程序所呈现的样子不完全由布局文件和源代码决定。...通过在 AndroidManifest.xml 中设置样式,也可以控制活动的外观,所设置样式可以基于预定的样式,也可以自定义样式。...6.7.1.预定样式对话框 在 Android 中,定义了一些具体的样式,它们可以在应用程序中被使用。本示例介绍如何使用 Android 中的预定义样式。...这个程序的布局文件和源代码都并无特别的地方,效果是通过在AndroidManifest.xml 中设置样式android:theme)为 Theme.Dialog 来实现的,Theme.Dialog...它们的样式设置成了 Translucent,这是一个用于描述背景透明的自定义样式,在 styles.xml 中定义。

55110
领券