我想知道是否可以(以及如何)自定义现有主题。
我想知道的是,当Activity
启动并在setContentView()
之前重新应用修改后的主题时,如何检索某个属性(即颜色)并对其进行更改。
与setTheme()
类似,但不使用资源id,而是使用修改后的主题。
为什么不制作自己的主题,将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>
在这种情况下,除了此处指定的item
之外,CodeFont
样式将与TextAppearance.Medium
样式相同。你可以对任何主题做同样的事情,包括默认的Holo或Dark主题等等。
根据进一步的研究和Eric的评论,目前还没有可能通过编程方式修改主题。不同的主题可以通过编程应用,但不能修改。一旦在XML中设置了样式,就无法对其进行修改。