如何为操作项(包括溢出菜单)的弹出窗口设置自定义颜色?

2024-01-17

背景

我正在努力为应用程序添加一些材料设计风格,因此我为操作栏和状态栏选择了不同的颜色。

问题

为此,应用程序的主题是“Theme.AppCompat.Light.DarkActionBar”,并添加此主题以隐藏操作栏,因为我需要将其作为工具栏处理:

我用过的主题:

<style name="AppTheme" parent="@style/Theme.AppCompat.Light.DarkActionBar">
    <item name="windowActionBar">false</item>
    <item name="windowNoTitle">true</item>
    <item name="windowActionModeOverlay">true</item>
</style>

我使用过的布局:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              xmlns:tools="http://schemas.android.com/tools"
              android:layout_width="match_parent"
              android:layout_height="match_parent"
              android:orientation="vertical">

    <android.support.v7.widget.Toolbar
        android:id="@+id/activity_app_list__toolbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="?attr/colorPrimary"
        android:minHeight="?attr/actionBarSize"
        android:theme="?attr/actionBarTheme"
        tools:ignore="UnusedAttribute"/>
</LinearLayout>

code:

  @Override
  protected void onCreate(Bundle savedInstanceState)
    {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    _toolbar=(Toolbar)findViewById(R.id.activity_app_list__toolbar);
    setSupportActionBar(_toolbar);
    }

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

由于某种原因,我得到了这种行为:

  1. 操作项和溢出项的子菜单是黑色的。
  2. 当点击搜索操作项时,溢出项是白色的。

我想自定义这些弹出菜单,以便它们保持一致。

我尝试过的

我尝试过使用这个:

<item name="actionOverflowMenuStyle">@style/OverflowMenu</item>

...
<style name="OverflowMenu" parent="Widget.AppCompat.Light.PopupMenu.Overflow">
</style>

但这根本没有帮助。

问题

有谁知道如何处理这个问题?这是支持库中的错误吗?

对我来说它看起来是这样的,所以我已经报告了它here https://code.google.com/p/android/issues/detail?id=172448,包括一个示例项目。


您可以使用以下命令自定义溢出菜单popupTheme属性:

<android.support.v7.widget.Toolbar
    android:layout_height="wrap_content"
    android:layout_width="match_parent"
    android:minHeight="@dimen/triple_height_toolbar"
    app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
    app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />

原来的答案遗漏了一些要点:

首先,工具栏应该有:

  <android.support.v7.widget.Toolbar
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="?attr/colorPrimary"
    android:minHeight="?attr/actionBarSize"
    android:theme="?attr/actionBarTheme"/>

对于轻量弹出窗口,请使用以下命令:

  <style name="AppTheme.Light" parent="@style/Theme.AppCompat.Light.DarkActionBar">
    <item name="actionBarTheme">@style/AppTheme.ActionBarTheme.Light</item>
    <item name="actionBarPopupTheme">@style/ThemeOverlay.AppCompat.Light</item>
  </style>

  <style name="AppTheme.ActionBarTheme.Light" parent="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
    <item name="colorControlActivated">#FFffffff</item>
    <item name="popupTheme">@style/ThemeOverlay.AppCompat.Light</item>
  </style>

对于深色弹出窗口,请使用以下命令:

  <style name="AppTheme.Light" parent="@style/Theme.AppCompat.NoActionBar">
    <item name="actionBarPopupTheme">@style/ThemeOverlay.AppCompat.Dark</item>
    <item name="actionBarTheme">@style/AppTheme.ActionBarTheme.Dark</item>
  </style>

  <style name="AppTheme.ActionBarTheme.Dark" parent="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
    <item name="colorControlActivated">#FFffffff</item>
    <item name="android:textColorPrimary">#FFffffff</item>
  </style>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何为操作项(包括溢出菜单)的弹出窗口设置自定义颜色? 的相关文章

  • 调整添加的绘制组件的大小和奇怪的摆动行为

    这个问题困扰了我好几天 我正在制作一个特殊的绘画程序 我制作了一个 JPanel 并添加了使用 Paint 方法绘制的自定义 jComponent 问题是 每当我调整窗口大小时 所有添加的组件都会 消失 或者只是不绘制 因此我最终会得到一个
  • 在 RESTful Web 服务中实现注销

    我正在开发一个需要注销服务的移动应用程序 登录服务是通过数据库验证来完成的 现在我陷入了注销状态 退一步 您没有提供有关如何在应用程序中执行身份验证的详细信息 并且很难猜测您在做什么 但是 需要注意的是 在 REST 应用程序中 不能有会话
  • Antlr 解析器运算符优先级

    考虑以下语法 我对运算符优先级有疑问 例如 res 2 a b有一个类似的解析树res 2 a b 我知道问题出在哪里 但我没有想到没有相互左递归的 漂亮 解决方案 你能帮我一点忙吗 该语法与自定义访问者一起使用 grammar Math
  • 仅当显式选择行时才关闭 ui-bootstrap typeahead

    我创建了这个jsBin http jsbin com livuqafe 2 edit来证明我遇到的问题 如果您转到此处 请尝试输入 五 并继续 你的自然反应是输入 五 然后按 Tab 如果你想要 五百 你可以向下箭头一次 但是 在这种情况下
  • 带有 Maven Wrapper 的 Java 17 导致无法识别的 VM 选项“MaxPermSize=512m”

    I use OpenJDK 17 https jdk java net 17 使用 Maven Wrapper 3 8 2 从春季初始化 https start spring io Maven项目 JAR打包 Java 17 Spring
  • 测量窗口偏移

    有没有一种方法可以测量 jQuery 中窗口的偏移量 以便我可以比较 固定 元素和相对定位元素的位置 我需要能够知道窗口滚动了多远 以便我可以使用该图来计算固定元素的高度 相对于视口顶部 和相对对象的高度 相对于顶部 之间的差异文件的内容
  • MySQL 查询计算上个月

    我想计算上个月的订单总额 我收到了从当前日期获取当月数据的查询 SELECT SUM goods total AS Total Amount FROM orders WHERE order placed date gt date sub c
  • 没有输入的 jQuery 日期选择器

    我有一个相当复杂的网络应用程序 我想向其中添加一些日期选择 UI 我遇到的问题是我无法从文档中弄清楚如何真正控制日期选择器的出现方式和时间 不涉及任何表单元素 不 我不会添加秘密表单字段 因此简单的开箱即用方法根本行不通 我希望有人可以提供
  • 类型或命名空间“MyNamespace”不存在等

    我有通常的类型或命名空间名称不存在错误 除了我引用了程序集 using 语句没有显示为不正确 并且我引用的类是公共的 事实上 我在不同的解决方案中引用并使用相同的程序集来执行相同的操作 并且效果很好 顺便说一句 这是VS2010 有人有什么
  • Mono 应用程序在非阻塞套接字发送时冻结

    我在 debian 9 上的 mono 下运行一个服务器应用程序 大约有 1000 2000 个客户端连接 并且应用程序经常冻结 CPU 使用率达到 100 我执行 kill QUIT pid 来获取线程堆栈转储 但它总是卡在这个位置
  • php 数组中出现意外的 json 输出结构

    我正在尝试转换动态数据 如何从 PHP 获取此 JSON JSON 122240cb 253c 4046 adcd ae81266709a6 item 0 3 这就是我所做的 但它不起作用 PHP json array 122240cb 2
  • 现代编译器是否优化乘以 1 和 -1

    如果我写 template
  • 一种无需 JavaScript 即可在 PHP 中确定浏览器宽度的方法?

    首先有吗 或者我必须使用javascript 我希望能够更改使用的 CSS 因此 frex 我可以为移动设备或其他设备加载较小的字体 不幸的是 仅使用 PHP 无法检测用户分辨率 如果您使用 Javascript 则可以在 cookie 中
  • 从 mvc 控制器使用 Web api 控制器操作

    我有两个控制器 一个mvc控制器和一个api控制器 它们都在同一个项目中 HomeController Controller DataController ApiController 如果我想从 HomeController 中使用 Dat
  • 如何确定 CultureInfo 实例是否支持拉丁字符

    是否可以确定是否CultureInfo http msdn microsoft com en us library system globalization cultureinfo aspx我正在使用的实例是否基于拉丁字符集 我相信你可以使
  • 如何修复:“无法解析类型 java.lang.CharSequence。它是从所需的 .class 文件间接引用的”消息? [复制]

    这个问题在这里已经有答案了 我正在尝试使用这个字符串 amountStr amountStr replace replace replace 但我收到一条错误消息 我知道我收到的错误消息是因为我刚刚发布的字符串已过时 所以我想知道该字符串的
  • 如何在 OSX 上安装 LaTeX .sty 文件?

    我设置了一个 LaTeX 项目 tex documents some file tex support todonotes sty where some file tex uses todonotes usepackage colorinl
  • 使用 WGL 创建现代 OpenGL 上下文?

    我正在尝试使用 Windows 函数创建 OpenGL 上下文 现代版本 基本上代码就是 创建窗口类 注册班级 创建一个窗口 choose PIXELFORMATDESCRIPTOR并设置它 创建旧版 OpenGL 上下文 使上下文成为当前
  • Android 材料芯片组件崩溃应用程序。无法膨胀 xml

    Tried Chip来自两个支持库的组件 com google android support design 28 0 0 rc01和材料 com google android material material 1 0 0 rc01 堆栈
  • 禁用允许文本选择的

    残疾人可以吗

随机推荐

  • 如何知道某个进程是否绑定到 Unix 域套接字?

    我正在为 Linux 编写一个 Unix 域套接字服务器 我很快发现 Unix 域套接字的一个特点是 虽然创建侦听 Unix 套接字会创建匹配的文件系统条目 但关闭套接字并不会删除它 此外 在手动删除文件系统条目之前 不可能bind 再次将
  • 从 Android 上的 IP 摄像机接收视频流

    我有一个 IP 摄像机 它以 MJPEG 格式传输视频 现在我的目标是接收它并在我自己的自定义 Android 应用程序中显示它 为此 我在 Android 平台上提供了三种编程替代方案 使用内置的 Android MediaPlayer
  • 安装 Flask 时出错 - Python

    我仍在尝试在 虚拟环境 上安装 Flask 当 virtualenv 激活时 我尝试获取 pip 命令时遇到一些错误 有事要做 我的用户名中有一个空格 但最终找到了解决方案 只需输入 pip 所在位置的正确路径即可 以避免用户名文件夹 ve
  • 如何在 angularjs 中创建简单的拖放

    我想知道如何使用 AngularJs 进行拖放 这是我到目前为止所拥有的 span span
  • TextView 当文本足够长时会截断文本

    我对 TextView 有一个奇怪的问题 它在末尾截断了部分文本 我的布局看起来像
  • Tkinter 按钮没有出现在 TopLevel 上?

    这是我针对这个问题写的一段代码 在不同的窗口上输入文本 https stackoverflow com questions 10051721 how to fetch the entry text on a different window
  • Pandas - 从列值创建列,并填充计数

    我有一个类似于下面的数据框 Index Time Weekday 0 21 10 00 Tuesday 1 21 15 00 Tuesday 2 21 20 00 Tuesday 3 21 20 00 Tuesday 4 21 25 00
  • Delphi 的 Outlook IPreviewHandler

    我已经能够为大多数文件类型实现预览处理程序 除了 Outlook 消息文件 我怎样才能实现这个目标 该代码似乎无法以流或文件模式打开 var ACLSID String AGUID TGUID ARect TRect FileInit II
  • 为什么方法 setColumnFilterCriteria() 给出“无法调用 null 的方法“setColumnFilterCriteria””?

    问题似乎很容易解决 但我花了很多时间寻找答案 我快疯了 我使用非常简单的代码将过滤添加到工作表中 但我不断收到相同的错误 类型错误 无法调用 null 的方法 setColumnFilterCriteria 范围从第 5 行开始 在第 50
  • 在 Objective-C 中创建抽象类

    我原本是一名 Java 程序员 现在使用 Objective C 我想创建一个抽象类 但这在 Objective C 中似乎不可能 这可能吗 如果不是 那么在 Objective C 中我能达到多接近抽象类的程度呢 通常 Objective
  • Spark groupByKey 替代方案

    根据 Databricks 最佳实践 SparkgroupByKey应该像 Spark 一样避免使用groupByKey处理的工作方式是 信息首先在工作人员之间进行洗牌 然后进行处理 解释 http databricks gitbooks
  • 我可以做一个简单的触发器吗?

    如果我创建一个插入 更新之前触发器 我知道如何做这样的事情 CREATE TRIGGER upd check BEFORE INSERT ON def servpath 0001 weatherstation FOR EACH ROW BE
  • gitignore 加载其他 gitignore

    是否可以 这git update index assume unchanged没有解决方案 必须跟踪被忽略的文件 创建子模块 E g 猫 customgitignore 1 2 3 i do not need this extension
  • 如何通过 VSCode 将 Jupyter Notebook 导出为 PDF 格式? (Windows 10)

    When I try to export my Jupyter Notebook in pdf format in VSCode like this 然后我得到这个错误 导出失败 请检查 Jupyter 输出面板以获取更多详细信息 jupy
  • 在cakephp的AppController中调用AppModel函数

    我有一个希望所有控制器都能够使用的函数 因此我在 AppController 中定义了它 现在 此函数将执行的部分操作与控制器无关 因此它应该在模型中 但由于这是通用操作 因此它在 AppModel 中似乎才是正确的 我的函数如下所示 cl
  • 删除字符串 Python 中的 Unicode 代码 (\uxxx)

    我的文档中有一些 Unicode 字符串 我想要的只是删除这个 Unicode 代码或用一些空格 替换它 示例 doc Hello my name is Ruth u2026 I really like swimming and danci
  • 实体框架一对多插入 - 外键违规

    我是第一次使用实体框架 并且尝试使用集合创建一个对象 并且我希望集合中的所有对象也都在数据库中创建 但我遇到了一些外键违规 我的样本表 table APPOINTMENTS ID VAR1 DATE APPOINTMENT table GU
  • 如何在 Android 应用程序中从 Web 服务器获取数据? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我想在 Android 应用程序中从
  • Django - 将模型代码与数据库进行比较

    我维护一个 Django 项目 其中的数据库有几个与实际数据库不同步的模型约束 因此 例如 某些模型字段设置了 null False 但数据库允许相应的数据库列为 NULL 我很好奇 Django 或第三方 Python 脚本中是否有一个实
  • 如何为操作项(包括溢出菜单)的弹出窗口设置自定义颜色?

    背景 我正在努力为应用程序添加一些材料设计风格 因此我为操作栏和状态栏选择了不同的颜色 问题 为此 应用程序的主题是 Theme AppCompat Light DarkActionBar 并添加此主题以隐藏操作栏 因为我需要将其作为工具栏