是否可以引用 styles.xml 文件中的属性?

2024-04-19

我想让用户能够切换整个应用程序的颜色皮肤。我的意思是当用户按下屏幕上的按钮时动态切换应用程序的某些自定义视图的样式。我知道如果你打电话Activity.setTheme() before onCreate()方法,您可以动态更改应用程序的主题,但普通视图(例如,NavigationView)在其 xml 布局上应用自定义样式,没有 setTheme 或 setStyle 方法,因此似乎不可能动态更改其样式。

我认为我的目标可能是引用内部声明的 AppTheme 中声明的颜色styles.xml文件。我的意思是,我可以声明两个 AppThemes,每个主题都有一组颜色,然后在为自定义视图声明的自定义样式中引用颜色。像这样的事情:

<resources>
    <style name="AppTheme" parent="Theme.AppCompat">
        <item name="customColor">#111111</item>
    </style>

    <style name="AppTheme.AnotherColor" parent="Theme.AppCompat">
        <item name="customColor">#222222</item>
    </style>

    <style name="CustomActionBar">
        <!-- title text color -->
        <item name="android:textColorPrimary">@styles/customColor</item>
    </style>
</resources>

因此,默认情况下,我的“AppTheme”上声明的自定义颜色将默认应用,使用颜色111111。但是当我使用更改应用程序的主题时setTheme(R.styles.AppTheme_AnotherColor)应用的颜色将是222222。如果可以的话那就完美了!但这是不可能的,或者我不知道如何直接从同一样式的另一个样式访问样式内声明的颜色styles.xml文件。我的意思是@styles/customColor不正确,我不知道如何访问该颜色。

如何才能实现这一目标?


是的,绝对可以向主题添加自定义属性和颜色。为此,您需要:

  1. 在您的中定义您的自定义属性res/values/attrs.xml file:

    <resources>
        <attr name="customColor" format="color" />
    </resources>
    
  2. 在主题中定义属性的值:

    <style name="AppTheme" parent="Theme.AppCompat">
        <item name="customColor">#111111</item>
    </style>
    
    <style name="AppTheme.AnotherColor" parent="Theme.AppCompat">
        <item name="customColor">#222222</item>
    </style>
    
  3. 在样式中使用自定义属性:

    <style name="CustomActionBar">
        <!-- title text color -->
        <item name="android:textColorPrimary">?attr/customColor</item>
    </style>
    
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

是否可以引用 styles.xml 文件中的属性? 的相关文章

  • 已发布的 Flutter 应用程序在启动时崩溃

    编辑 此问题的解决方案是将您的 flutter 版本升级到较新的 dev 版本 then 1 7 0 您还可以上传单独的 APK 版本 但我个人不喜欢这个选项 请确保您没有从 flutter github 开发存储库下载 错误的构建 因为那
  • 如何在出现“无法解析放置符号”错误时向哈希图添加键和值

    我正在与安卓工作室 https en wikipedia org wiki Android Studio1 4 1 我刚刚创建了一个 Hashmap 并正在遵循有关如何填充和操作它的教程 Java 语言 但是 我收到 无法解析符号放置 错误
  • 按钮未显示在屏幕上

    我创建了一个应用程序 其中显示带有图像和文本的列表视图 我在页面末尾添加按钮 但这没有显示在屏幕上 我是 Android 新手 我该如何解决这个问题 这是我的 UI XML 代码
  • 如何将画廊意图中的“打开”更改为“完成”?

    我使用以下意图打开画廊来选择多个图像和视频 Intent intent new Intent intent setType image video intent putExtra Intent EXTRA ALLOW MULTIPLE tr
  • 连接到不可发现的蓝牙设备

    我正在开发一个安卓应用程序 只是一个一般性问题 是否可以连接到公开不可发现的设备 提前致谢 如果您之前已与该设备配对 则即使该设备未处于可发现模式 也可以再次连接到该设备 参见这篇文章 以编程方式连接到配对的蓝牙设备 https stack
  • 为什么按钮上的 maxWidth 不起作用以及如何解决它?

    我的布局上有两个按钮 在大屏幕设备 平板电脑 上我想限制它们的宽度 这样它们看起来就不会很荒谬 我希望使用 maxWidth 属性 但它显然在我的场景中没有任何作用 这是布局定义 按钮使用布局的整个宽度 忽略 maxWidth 中的任何值
  • Android-工具栏中的SearchView

    我只想在我的应用程序中添加 searchview 但我不想搜索任何东西 只是我想要用户输入的查询 到目前为止 我尝试了这段代码 但是当我运行我的应用程序时它崩溃了 Update 我尝试了这个 但即使我的应用程序崩溃了 main menu x
  • AnalyticsService 未在应用程序清单中注册 - 错误

    我正在尝试使用 sdk 中提供的以下文档向 Android 应用程序实施谷歌分析服务 https developers google com analytics devguides collection android v4 https d
  • Android Web Intent 问题

    G day 免责声明 我不是 Android 开发人员 我正在对我所描述的问题进行质量检查 我用来描述这个问题的技术术语可能是错误的 我正在测试一个 Android 应用程序 该应用程序在其清单中描述它可以使用 type 的地址处理 Web
  • Integer.parseInt("0x1F60A") 以 NumberformatException 结束

    我尝试从数据库中获取长字符串内的表情符号代码 格式如下 0x1F60A 所以我可以访问代码 但它将是String 起初 我尝试通过执行以下操作来转换变量tv setText beforeEmo getEmijoByUnicode int e
  • Android GCM 服务器的 API 密钥

    我有点困惑我应该为 GCM 服务器使用哪个 API 密钥 在文档中它说使用 android api 密钥 这对我不起作用并且总是给出未经授权的 http developer android com google gcm gs html ht
  • 加快 ImageView 中的缩放功能

    我目前正在处理非常大的图像 7 10mb 由于多种原因无法调整大小或压缩 现在 我们的想法是在自定义 ImageView 中显示它们 使用户能够进行双击缩放 捏合缩放等 我使用这个库来完成这项工作 https github com Mike
  • Android 改变 ImageView / Bitmap 的颜色

    我需要找到一种方法来改变 Android 中位图的颜色 我需要在我的应用程序中平滑地替换 更改椭圆形图像的颜色 具体取决于int价值 我需要类似的东西myValue 5比改变我的图像的颜色RED and if myValue 322将颜色更
  • 如何在Android Compose中使用otf类型字体文件?

    我正在学习使用 Android Jetpack Compose 现在我有一个正则 otf字体文件在资产 字体 我想在文本中使用它 java lang RuntimeException Font asset not found commonu
  • 使用嵌套的 hashmap 参数发送 volley 请求

    我正在使用 android volley 框架向我的服务器发送 jsonobject 请求 get 请求工作正常 现在我想发送一个带有请求参数的 post 请求 该请求参数是嵌套的 hashmap 我重写 getparams 方法 但它期望
  • 不显示 WRITE_EXTERNAL_STORAGE 的权限对话框

    I want to download a file using DownloadManager And DownloadManager wants to WRITE EXTERNAL STORAGE permission I have in
  • 内部存储的安全性如何?

    我需要的 对于 Android 我需要永久保存数据 但也能够编辑 并且显然是读取 它 用户不应访问此数据 它可以包含诸如高分之类的内容 用户不得对其进行编辑 我的问题 我会 并且已经 使用过Internal Storage 但我不确定它实际
  • “无法实例化活动”错误

    我的一个 Android 应用程序拥有大约 100 000 个用户 每周大约 10 次 我会通过 Google 的市场工具向我报告以下异常情况 java lang RuntimeException Unable to instantiate
  • 在 Android 布局 xml 文件中使用字符串格式参数 [重复]

    这个问题在这里已经有答案了 我在 String xml 文件中定义了一个使用格式参数的字符串 即
  • Android 中的 Google Places API - 适用于个人用户的 API_KEY

    我已经浏览了与在 Android 应用程序中使用 Places API 相关的 Android 文档和其他博客 到处都建议使用 API KEY 来调用 REST 服务 API KEY 在整个项目 应用程序中都是相同的 每天的请求数限制为 1

随机推荐

  • 文本和边框之间的富文本框填充

    是否可以在文本和边框之间的富文本框控件中添加填充 我尝试将一个富文本框停靠在面板内 并将所有四个边的填充设置为 10 这实现了我想要的效果 除非需要富文本框的垂直滚动条 该滚动条也会被填充 有EM GETRECT https learn m
  • 如何在 blogdown 中使用 bibtex 进行引用?

    我想在使用 R 包 blogdown 创建的静态网站页面上使用引用 基于关于 blogdown 的书 https bookdown org yihui blogdown https bookdown org yihui blogdown 这
  • Django - DRF - 调度方法流程

    我正在与 DRF 合作构建一个 API 并使用主类对基于类的视图进行一些验证 class MasterClass APIView def dispatch self request args response super FaveoAPIV
  • 将回调地狱转换为延迟对象

    背景 所以 我有一个相当大的项目 有很多 API 函数 我正在考虑完全转向协程 但由于它们的实现方式是Callback并不是Deferred 我无法有效地使用它们 例如 我想做apiCallOne apiCallTwo and apiCal
  • SqlBulkCopy 的建议批量大小是多少?

    建议的批量大小是多少SqlBulkCopy 我正在寻找一个可以用作性能调整起点的通用公式 我有一个导入实用程序与我的 SQL Server 实例位于同一台物理服务器上 使用自定义IDataReader 它解析平面文件并将它们插入数据库中SQ
  • Vim:如何将一组行重新格式化为一行(如果该行是一个句子)?

    不是重复的在 Vim 中 将文件中的所有行连接成一行的最简单方法是什么 https stackoverflow com questions 391710 in vim what is the simplest way to join all
  • 线段-多边形相交

    问候 我想检测一个线段是否只 接触 多边形或穿过它 人物 解释了我的疑问 如何知道情况A和B的区别 请注意 在这两种情况下 红线在两个顶点处穿过多边形 一个顶点与外部相接触 另一个顶点与内部相交 我有一个段 段相交算法 但我不知道如何正确使
  • 使用 iText 段落之间的图像

    我正在使用 iText 生成自定义 pdf 文档 我尝试了很多 但无法获得包含图像的文本的所需设计 我需要如下所示的输出 我尝试过 Chunk 类和 Paragraph 类 但我无法获得所需的结果 有任何想法吗 你有 至少 两个选择 Use
  • MySQL select for update 返回空集,即使存在一行

    我发现 MySQL 的 选择更新 有一个奇怪的问题 我使用的是5 1 45版本 我有两张桌子 mysql gt show create table tag Tabl
  • 在 Mac 上打开 CSV 文件时出现错误 53

    当我尝试打开 CSV 文件时 我得到 错误 53 找不到文件 我在第四行收到错误 Open FilePath For Input As 1我究竟做错了什么 这是我第一次打开 CSV 请宽容我的代码 Sub opentextfile Dim
  • “Android”中的所见即所得视图编辑器?

    复制 有适用于 Google Android 的表单设计器吗 https stackoverflow com questions 1755860 我想移动一个复选框 以便它显示在与 main xml 内绝对布局下的左上角不同的位置 对于 A
  • 这个文件格式叫什么

    我需要解析以下格式的文件 General Description Some Text Version 4 ProjType 1 Configurations Mice BuildOutputs BuildProject OutputFile
  • 更改背景颜色

    好吧 我对 vim 还很陌生 我不知道如何更改背景颜色 我正在编辑 vimrc 文件来设置这些颜色 但找不到任何背景颜色 我正在使用一个配色方案 我只需要知道如何覆盖它或者要查找什么 以便我可以在我的 color theme vim 文件中
  • 如何让 NSView 不裁剪其边界区域?

    我在 Xcode 上为 OS X 创建了一个空的 Cocoa 应用程序 并添加了 void applicationDidFinishLaunching NSNotification aNotification self view NSVie
  • Android Studio 布局编辑器无法渲染自定义视图

    在 Android Studio 中 布局编辑器无法预览 xml 中的自定义视图 非常简单的例子 public class MyCustomView extends FrameLayout public MyCustomView Conte
  • 使用 Lucene 进行精确短语搜索?

    我正在使用 SpanTerm Query 在 lucene 中搜索确切的短语 但这似乎不起作用 这是我的代码 Indexing IndexWriter writer new IndexWriter dir new StandardAnaly
  • 预计结构位于 的左侧。或 .* 但它是一个结构

    我收到编译错误structure required on left side of or on chest contents 0 but chest是一个结构 class Item public int id int dmg class C
  • 将JSON键值对绑定到polymer dart中的表模板

    如何以聚合物表示法绑定到 json 对象内的键 值对 我有模板重复 jsonarray中的对象 我想布置一个表格 假设每个对象有 1 一 2 二 3 三 就像是
  • Python 线程模块导入失败

    我正在尝试导入线程模块 但是 我似乎只是无缘无故地收到了错误 这是我的代码 import threading class TheThread threading Thread def run self print Insert some t
  • 是否可以引用 styles.xml 文件中的属性?

    我想让用户能够切换整个应用程序的颜色皮肤 我的意思是当用户按下屏幕上的按钮时动态切换应用程序的某些自定义视图的样式 我知道如果你打电话Activity setTheme before onCreate 方法 您可以动态更改应用程序的主题 但