我想知道是否可以(以及如何)自定义现有主题。
我正在寻找的是如何检索某个属性(即颜色)并在Activity
启动时更改它并在setContentView()
之前重新应用修改过的主题。
与setTheme()
类似,但不使用资源ID,而是使用修改后的主题。
答案 0 :(得分:6)
为什么不制作自己的主题,将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
样式相同,但此处指定的item
除外。你可以对任何主题做同样的事情,包括默认的Holo或Dark主题或诸如此类的。
答案 1 :(得分:2)
基于进一步的研究和Eric的评论,还没有一种可能的方法来以编程方式修改主题。可以通过编程方式应用不同的主题,但不能修改。样式在XML中设置后,就无法修改。