1

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

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

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

4

2 回答 2

6

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

<?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样式将与样式相同,但此处指定的 sTextAppearance.Medium除外。item您可以对任何主题执行相同的操作,包括默认的 Holo 或 Dark 主题等等。

于 2012-09-10T18:58:56.420 回答
2

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

于 2012-10-05T23:24:30.710 回答