我希望能够声明一些主题,以轻松更改我的应用程序的外观。所以我知道您可以定义一个继承自android:Theme的样式,然后在其中定义属性。

但是有两个问题:

  • 如果我想为应用程序中的不同 View 提供不止一种背景色,该怎么办?这样,我就可以拥有整个 Activity 的背景和 Activity 中的文本 View 的背景,以及按钮等的另一个背景。但是这些(不同的)颜色是否与主题相关?
  • 是否可以根据使用的主题定义一组可绘制对象。我的意思是类似于您如何为例如不同的屏幕密度定义不同的可绘制对象。理想情况下,我会为不同的主题使用具有不同配色方案的图像。可以在android中定义此行为吗?

  • 谢谢你的帮助,
    詹姆士

    最佳答案

    您可以为每种小部件类型所需的不同颜色或可绘制对象定义不同的样式,然后引用各种主题中的样式。例如:

    <!-- themes -->
    
    <style name="MyTheme" parent="android:style/Theme.Light">
        <item name="android:windowNoTitle">true</item>
        <item name="android:windowBackground">@drawable/something</item>
        <item name="android:buttonStyle">@style/MyButton</item>
    </style>
    
    <style name="MyTheme.Red">
        <item name="android:buttonStyle">@style/MyButton.Red</item>
    </style>
    
    <style name="MyTheme.Blue">
        <item name="android:buttonStyle">@style/MyButton.Blue</item>
    </style>
    
    <!-- styles -->
    
    <style name="MyButton" parent="android:style/Widget.Button">
        <item name="android:background">@drawable/btn_mydefault</item>
    </style>
    
    <style name="MyButton.Red">
        <item name="android:background">@drawable/btn_red</item>
    </style>
    
    <style name="MyButton.Blue">
        <item name="android:background">@drawable/btn_blue</item>
    </style>
    

    10-07 19:20
    查看更多