如何通过参考id获取主题

2024-04-20

我需要从主题中提取默认值,但不是从当前主题中提取。

我知道我可以从当前主题中获取属性,如下所示:

TypedValue typedValue = new TypedValue();
Theme currentTheme = context.getTheme();
currentTheme.resolveAttribute(android.R.attr.windowBackground, typedValue, true);
// result is in: typedValue.data

但我需要类似的东西:

Theme darkTheme = getTheme(R.style.AppTheme.Dark);

... 我只需要提取单个值,我不想更改当前主题。


似乎没有任何直接的方法来实例化或以其他方式创建Theme资源中的对象,至少就我能找到的而言。

最初的建议是创建一个临时的ContextThemeWrapper并得到Theme对此表示反对。我们包装应用程序Context,因为它不会(不应该)已经有一个主题:

Theme darkTheme = new ContextThemeWrapper(getApplicationContext(), R.style.AppTheme_Dark).getTheme();

然后我意识到我们可以做这样的事情:

Theme darkTheme = getResources().newTheme();
darkTheme.applyStyle(R.style.AppTheme_Dark, true);

事实证明,这正是ContextThemeWrapper解决方案无论如何都是在内部进行的,所以这种方法显然是更好的,因为我们不会不必要地创建和丢弃ContextThemeWrapper实例。

请注意,哪个并不重要Context the getResources()已拨打电话;最终newTheme()只返回一个空值Theme。此外,尽管有名称(以及样式和主题一般不可互换),Theme#applyStyle()实际上确实需要一个主题资源 ID。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何通过参考id获取主题 的相关文章

  • 找不到参数的方法 dependencyResolutionManagement()

    我正在尝试使用老师给我的一个项目 但它显示了一个错误 Settings file Users admin AndroidStudioProjects HTTPNetworking settings gradle line 1 A probl
  • Android - 从资产中解析巨大(超大)JSON 文件的最佳方法

    我正在尝试从资产文件夹中解析一些巨大的 JSON 文件 我如何加载并添加到 RecyclerView 我想知道解析这种大文件 大约 6MB 的最佳方法是什么 以及您是否知道可以帮助我处理此文件的良好 API 我建议您使用GSON lib h
  • 谷歌坐标认证

    当我尝试连接到 Google 坐标时 总是出现异常GoogleAuthException 我拥有 Google 地图协调中心许可证 我确实使用我的包应用程序名称和 SHA1 在 google 控制台中创建了我的客户端 ID 我将权限添加到清
  • java.lang.NoClassDefFoundError:org.apache.batik.dom.svg.SVGDOMImplementation

    我在链接到我的 Android LibGDX 项目的 Apache Batik 库时遇到了奇怪的问题 但让我们从头开始 在 IntelliJ Idea 中我有一个项目 其中包含三个模块 Main Android 和 Desktop 我强调的
  • 计数物体和更好的填充孔的方法

    我是 OpenCV 新手 正在尝试计算物体的数量在图像中 我在使用 MATLAB 图像处理工具箱之前已经完成了此操作 并在 OpenCV Android 中也采用了相同的方法 第一步是将图像转换为灰度 然后对其进行阈值计算 然后计算斑点的数
  • 找不到处理意图 com.instagram.share.ADD_TO_STORY 的活动

    在我们的 React Native 应用程序中 我们试图让用户根据视图 组件中的选择直接将特定图像共享到提要或故事 当我们尝试直接使用 com instagram share ADD TO FEED 进行共享时 它以一致的方式完美运行 但是
  • 在 HTTPResponse Android 中跟踪重定向

    我需要遵循 HTTPost 给我的重定向 当我发出 HTTP post 并尝试读取响应时 我得到重定向页面 html 我怎样才能解决这个问题 代码 public void parseDoc final HttpParams params n
  • 无法访问 com.google.android.gms.internal.zzbfm 的 zzbfm 类文件未找到

    我正在将我的 Android 应用程序项目从GCM to FCM 为此 我使用 Android Studio 中的 Firebase 助手工具 并遵循 Google 开发人员指南中的说明 一切都很顺利 并将我的应用程序代码更改为FCM根据助
  • 尝试将相机切换回前面但出现异常

    尝试将相机切换回前面 但出现异常 找不到 问题请检查并帮助 error 01 27 11 49 00 376 E AndroidRuntime 30767 java lang RuntimeException Unable to start
  • 是否有 ADB 命令来检查媒体是否正在播放

    我想使用 ADB 命令检查根植于终端的外部设备中是否正在播放音频 视频 我无法找到任何 ADB 命令 如果有 我尝试过 adb shell dumpsys media player 我想要一个命令来指定视频是否正在运行 您可以使用以下命令查
  • 控制Android的前置LED灯

    我试图在用户按下某个按钮时在前面的 LED 上实现 1 秒红色闪烁 但我很难找到有关如何访问和使用前置 LED 的文档 教程甚至代码示例 我的意思是位于 自拍 相机和触摸屏附近的 LED 我已经看到了使用手电筒和相机类 已弃用 的示例 但我
  • 如何在PreferenceActivity中添加工具栏

    我已经使用首选项创建了应用程序设置 但我注意到 我的 PreferenceActivity 中没有工具栏 如何将工具栏添加到我的 PreferenceActivity 中 My code 我的 pref xml
  • 在 SQLite 中搜索时排除 HTML 标签和一些 UNICODE 字符

    更新 4 我已经成功运行了firstchar例如 但现在的问题是使用regex 即使包含头文件 它也无法识别regex操作员 有什么线索可以解决这个问题吗 更新 2 我已经编译了sqlite3我的项目中的库 我现在正在寻找任何人帮助我为我的
  • 在两个活动之间传输数据[重复]

    这个问题在这里已经有答案了 我正在尝试在两个不同的活动之间发送和接收数据 我在这个网站上看到了一些其他问题 但没有任何问题涉及保留头等舱的状态 例如 如果我想从 A 类发送一个整数 X 到 B 类 然后对整数 X 进行一些操作 然后将其发送
  • 我的设备突然没有显示在“Android 设备选择器”中

    我正在使用我的三星 Galaxy3 设备来测试过去两个月的应用程序 它运行良好 但从今天早上开始 当我将设备连接到系统时 它突然没有显示在 Android 设备选择器 窗口中 我检查过 USB 调试模式仅在我的设备中处于选中状态 谁能猜出问
  • 如何根据 gradle 风格设置变量

    我想传递一个变量test我为每种风格设置了不同的值作为 NDK 的定义 但出于某种原因 他总是忽略了最后味道的价值 这是 build gradle apply plugin com android library def test andr
  • 一次显示两条Toast消息?

    我希望在一个位置显示一条 Toast 消息 并在另一位置同时显示另一条 Toast 消息 多个 Toast 消息似乎总是按顺序排队和显示 是否可以同时显示两条消息 是否有一种解决方法至少可以提供这种外观并且不涉及扰乱活动布局 Edit 看来
  • 将两个文本视图并排放置在布局中

    我有两个文本视图 需要在布局中并排放置 并且必须遵守两条规则 Textview2 始终需要完整显示 如果布局中没有足够的空间 则必须裁剪 Textview1 例子 文本视图1 文本视图2 Teeeeeeeeeeeeeeeeeextview1
  • Crashlytics 出现 Android Studio 构建错误

    我正在尝试将 CrashLytics 与 Android Studio 和 gradle 一起使用 但出现一个令人困惑的错误 java lang NoSuchMethodError 我的 build gradle 是 buildscript
  • 节拍匹配算法

    我最近开始尝试创建一个移动应用程序 iOS Android 它将自动击败比赛 http en wikipedia org wiki Beatmatching http en wikipedia org wiki Beatmatching 两

随机推荐

  • 对 Java 集合进行排序和分组

    我有一个有名称和分数的对象 我想对此类对象的集合进行排序 以便它们按名称分组并按每组中的最大分数排序 并且在组内也按降序分数排序 让我展示一下我想要实现的目标 假设我有这些对象 名称 分数 a 3 a 9 b 7 b 10 c 8 c 3
  • Spark 使用前一行的值向数据帧添加新列

    我想知道如何在 Spark Pyspark 中实现以下目标 初始数据框 id num 4 9 0 3 7 0 2 3 0 1 5 0 结果数据框 id num new Col 4 9 0 7 0 3 7 0 3 0 2 3 0 5 0 我通
  • 可加载组件:异步加载组件失败

    我创建了模块 A 它是我的 React 应用程序的组件库 我计划在模块 B 上使用它 这是我实际的 React 应用程序 我有一个 index js 通过以下方式使用可加载组件从模块 A 导出我的组件 import loadable fro
  • ComboBoxModel 事件不起作用

    我似乎不理解事件等概念 在阅读了有关如何实现侦听器等内容的一段时间后 我发现 Java 教程说我应该扩展AbstractListModel触发数据事件 由于某种原因它仍然不起作用 我做错了什么吗 以及预计会出现什么样的代码addListDa
  • C++中如何处理bad_alloc?

    有一种方法叫做foo有时会返回以下错误 terminate called after throwing an instance of std bad alloc what std bad alloc Abort 有没有一种方法可以让我使用t
  • 将 mogenerator 集成到 Xcode 4 中

    在我的应用程序中 我使用核心数据来实现持久数据保存 因为我已经看到 mogenerator 提供了一种很好的方法来创建和维护NSManagedObject子类 也具有附加功能 我正在寻找一些在 Xcode 4 中集成 monogenerat
  • 如何将 CSS 应用到 Mac Chrome 选择框?

    无论我做什么 使用 Mac OSX 10 9 2 和 Chrome 版本 33 0 1750 152 padding background color 没有任何效果 我真的只是想申请一个padding top and padding bot
  • 直到用户输入匹配变量为止

    好的 所以我正在尝试创建一个用户名 密码登录脚本 可能不是我仍在研究的最安全的想法 我的脚本将加载变量以与这样的文件进行比较 现在我只是在研究密码部分 path to variables conf 该文件将包含一个名为的变量 PASS SO
  • C# 睡眠检测 PowerModeChanged

    我希望我的程序在计算机进入睡眠状态时写入控制台 但我无法这样做 我认为我设置错误 这是我所拥有的 编辑 新的 cs 文件 using LightFX using System using System Threading using Sys
  • 如何让 Pyglet 为 Python 3 工作?

    我很高兴能使用 Pyglet 因为它的所有功能 但是我在 Python 3 上安装 Pyglet 的最新开发版本时遇到问题 我知道人们已经问过这个问题 但没有一个回答对我有任何帮助 更新 我的意思是 我无法为 Python 3 安装 Pyg
  • 循环动态展开子网格 - JQGrid

    我有一个带有使用 subGridRowExpanded 的子网格的网格 我想动态扩展网格的一些行 所以我写了以下内容 在第一个网格的 GridComplete 事件中 ids 是我的网格的行 id 数组 for int i 0 i lt i
  • 截断轨道后无法使用原始数据

    问题是如果我使用然后我尝试打印它 我仍然看到所有 html 标签 truncate默认情况下转义字符串 但您可以使用将其关闭 escape option description truncate post content separator
  • 是否可以为简单的类创建表单

    我只是希望能够编辑不是 ActiveRecord 类的后继类的类属性 这是我的类 app model entry rb class Entry attr accessor title body end 这是一个控制器 class Diary
  • 惰性 IO - 字符串未被垃圾收集?

    我目前正在尝试将 XML 文件的内容读入Map Int Map Int String 而且效果很好 使用 HaXml 但是 我对程序的内存消耗不满意 问题似乎是垃圾收集 这是我用来读取 XML 文件的代码 type TextFile Map
  • Spring Cloud Docker - 配置服务器无法获取属性文件作为文件后端的使用

    我在获取全部内容时遇到问题特性文件来自配置服务器 in my 春季云示例 我已经和它一起工作过Docker 我只获取了 4 个属性文件 广告服务 用户服务 API网关 报表服务 而其他属性文件 eureka服务器和管理服务 无法从配置服务器
  • 如果满足条件,如何将值添加到上一行

    我想做的是 如果 b 列中的一行等于 2 那么我想将 3 添加到 a 列中前一行的值 如果不满足条件 那么我不希望更改前一行的值 然而 当我尝试此代码时 R 正在添加到后续行 我用什么替换 1 行引用并不重要 它总是添加到后续行 df a
  • 在没有自定义 ListView 的 ListActivity 中使用 setDivider 更改分隔线?

    我似乎无法使用我定义的 Drawable 获得自定义分隔线 以便在使用ListActivity并且不创建自定义ListView 这几乎就像虚拟机创建自己的ListView对我来说 与ListActivity 它使用提供默认分隔线的主题 如果
  • 如何在 VS Code 中编辑现有的 azure 函数

    到目前为止 在我发现的有关使用 Visual Studio 代码的 Azure 函数的所有教程中 它们都是关于创建和部署的 我只是想知道如何在 VS Code 中打开现有的 azure 函数 修改它并重新部署它 那可能吗 I can ope
  • 可以使 ctag 遵循 #include 指令吗?

    我正在尝试在我的 Makefile 中创建一个目标来自动创建tags使用 ctags 文件 我有一个源文件列表 cpp 文件 但我没有所有头文件的列表 我使用g MM创建标头依赖项列表 我本以为 ctags 会遵循任何 include生成标
  • 如何通过参考id获取主题

    我需要从主题中提取默认值 但不是从当前主题中提取 我知道我可以从当前主题中获取属性 如下所示 TypedValue typedValue new TypedValue Theme currentTheme context getTheme