gpt4 book ai didi

android - 如何以编程方式创建 Android 主题样式?

转载 作者:IT老高 更新时间:2023-10-28 22:23:02 27 4
gpt4 key购买 nike

有很多关于通过 XML 创建或自定义 Android 主题样式的文档和教程,但还没有找到在代码中创建它的方法。关于如何在代码而不是 xml 中创建样式的任何想法?

这是示例 XML,需要在代码中以编程方式创建:

<resources>
<style name="AppTheme" parent="android:Theme.Material">
<item name="android:colorPrimary">@color/primary</item>
<item name="android:colorPrimaryDark">@color/primary_dark</item>
<item name="android:colorAccent">@color/accent</item>
</style>
</resources>

最佳答案

简短回答:不可能以编程方式 创建一个主题并设置为应用程序主题(即使我们实现了创建 Theme 对象)没有主题资源 ID。

详情:

当你调用setTheme函数时,ContextWrapper的方法无效, 最后用资源id指针调用AssetManagerAssetManager类持有应用应用主题的方法,即JNI调用

native static final void applyThemeStyle(long theme, int res, boolean force);

如上所述,我们只能传递资源 id 来应用主题样式。但可能的选择是

  1. 虽然它仅限于 Window 类特征常量。我们可以用 setFeatureDrawable & 特征常量来设置一些可绘制对象例如,FEATURE_ACTION_BARFEATURE_CONTEXT_MENU 等。
  2. 使用 setTheme Activity 中的函数,我们可以从样式资源中设置主题,这将解决 AjaySharmaNathan
  3. 评论中提到的问题

关于android - 如何以编程方式创建 Android 主题样式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32797436/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com