ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

android-如何更改上下文菜单项的颜色

2019-11-19 21:37:41  阅读:298  来源: 互联网

标签:android-styles android


我无法将上下文菜单栏上的项目的颜色更改为白色.栏看起来像这样-

enter image description here

我有一个扩展AppCompatActivity的Activity.我正在使用带有Theme.AppCompat.Light.NoActionBar主题的工具栏. style.xml如下所示:

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
        <item name="android:actionBarStyle" tools:ignore="NewApi">@style/MyActionBar</item>
        <item name="android:windowDrawsSystemBarBackgrounds">true</item>
        <item name="windowActionModeOverlay">true</item>
        <item name="android:windowTranslucentStatus">true</item>
        <item name="actionBarPopupTheme">@style/ThemeOverlay.AppCompat.Light</item>
        <item name="actionModeStyle">@style/LStyled.ActionMode</item>
        <item name="colorPrimary">@android:color/white</item>
        <item name="android:textColorSecondary">@android:color/white</item>
        <item name="android:colorPrimaryDark">@android:color/white</item>
        <item name="colorControlNormal">@color/edit_text_border</item>
        <item name="colorControlActivated">@color/blue</item>
    </style>

    <style name="LStyled.ActionMode" parent="@style/Widget.AppCompat.ActionMode">
        <item name="background">@color/blue</item>
        <item name="actionMenuTextColor">@android:color/white</item>
        <item name="android:actionBarStyle">@style/MyActionBar</item>
    </style>

<style name="MyActionBar" parent="@style/Widget.AppCompat.Light.ActionBar.Solid.Inverse">
        <item name="android:background" tools:ignore="NewApi">@color/blue</item>
        <item name="background">@color/blue</item>
        <item name="android:textColorPrimary">#fff</item>
        <item name="android:textColor">#fff</item>
    </style>

当我切换到上下文菜单时,使用以下代码,项目颜色将从白色变为黑色,

MenuInflater inflater = mode.getMenuInflater();
inflater.inflate(R.menu.lead_list_context_menu, menu);

我还尝试过将主题更改为Theme.AppCompat.NoActionBar,将ActionBar的颜色更改为白色,但这也会更改对话框和菜单弹出背景和文本的颜色(我不想要).

我遇到的另一个问题是,上下文菜单的状态栏颜色变为黑色.启用上下文菜单后,如何设置状态栏颜色.

有什么办法可以更改文本颜色和状态栏颜色?

解决方法:

您可以尝试在XML布局文件中的工具栏上更改主题样式:

尝试一下,或者可能有助于执行类似的代码:

 <android.support.v7.widget.Toolbar 
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/activity_my_toolbar"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:minHeight="?attr/actionBarSize"
    android:background="?attr/colorPrimary"
    app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
    app:popupTheme="@style/ThemeOverlay.AppCompat.Light"/>

要更改标题颜色,您可以通过编程方式进行:

toolbar.setTitleTextColor(0xFFFFFFFF);

更新1

要更改弹出窗口的背景颜色,您可以仅在该弹出窗口的新主题上直接分配颜色,然后在AndroidManifest.xml上分配颜色,请尝试如下操作:

 <style name="AppTheme" parent="android:Theme.Light">
    <item name="android:popupMenuStyle">@style/PopupMenu</item>
</style>

<style name="PopupMenu" parent="@android:style/Widget.PopupMenu">
    <item name="android:popupBackground">@android:color/white</item>
</style>

AndroidManifest.xml

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
.............
</application>

更新2

启用上下文菜单后,可以再次以编程方式更改statusBar的颜色:

试试看:

getWindow().setStatusBarColor(0xFFFFFFFF);

如果它在getWindow()方法上报告错误,请尝试以下操作:

Window window = activity.getWindow();

window.setStatusBarColor(0xFFFFFFFF);

注意

You only can change StatusBarColor on Android Lollipop, remember that,
on Devices with pre-Lollipop version the statusBarColor it’s allways
Black or soemtimesTransparent

标签:android-styles,android
来源: https://codeday.me/bug/20191119/2039171.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有