【问题标题】:Modify existing theme修改现有主题
【发布时间】:2012-09-03 16:17:05
【问题描述】:

我想知道是否可以(以及如何)自定义现有主题。

我正在寻找的是如何检索某个属性(即颜色)并在Activity 启动时更改它并在setContentView() 之前重新应用修改后的主题。

类似于setTheme(),但不是使用资源ID,而是使用修改后的主题。

【问题讨论】:

    标签: android styles themes android-theme


    【解决方案1】:

    为什么不直接制作自己的主题,将android:parent 设置为要复制的主题,然后设置自己的属性?这在this documentation 中得到了演示,如下所示:

    <?xml version="1.0" encoding="utf-8"?>
    <resources>
        <style name="CodeFont" parent="@android:style/TextAppearance.Medium">
            <item name="android:layout_width">fill_parent</item>
            <item name="android:layout_height">wrap_content</item>
            <item name="android:textColor">#00FF00</item>
            <item name="android:typeface">monospace</item>
        </style>
    </resources>
    

    在这种情况下,CodeFont 样式将与 TextAppearance.Medium 样式相同,但此处指定的 items 除外。您可以对任何主题执行相同的操作,包括默认的 Holo 或 Dark 主题等等。

    【讨论】:

    • 因为我希望能够在每次Activity 开始使用不同的输入值时更改它。这样它是静态的。我已经研究过并尝试过,但这不是我想要的。
    • 您不能以编程方式更改样式,抱歉。你can modify the appearance of items based on a custom style,但是一旦在XML中设置了样式,就不能修改了。
    • 这也处理预加载的样式。我正在寻找在运行时更改它。
    • 好吧,正如我已经给你的那样——你不能改变样式或以编程方式编辑它们——这就是答案。祝你好运,我猜。
    【解决方案2】:

    根据进一步的研究和 Eric 的评论,目前尚无法以编程方式修改主题。可以以编程方式应用不同的主题,但不能修改。样式一旦在 XML 中设置,就无法修改。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-13
      • 1970-01-01
      • 1970-01-01
      • 2013-04-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多