在应用中创建两个单独的主题

时间:2013-05-10 19:38:08

标签: android widget styles themes

我一直在使用自定义styles而且我做得很好,但现在我对如何对styles,{{1}等小部件使用完全不同的CompoundButtons感到困惑},Spinners等等。我为每种类型制作了自定义ImageButton,每个类型都有自己的Buttons,具体取决于其状态。我已经弄明白了但是我需要两个完全不同的drawable(例如,当按下状态时使用meal_orange Themes并使用meal_blue为ImageButton状态按下我的其他ImageButton )取决于该应用程序适用于两个客户中的哪一个。我已经搜索过这个问题,所以要么没有两个单独的应用程序就不可能,或者我没有找到正确的术语或完全理解Theme(可能两者都有)。

我目前拥有的一个小例子是themes

styles.xml

我最初创建了一个类似

的自定义// these point to separate selector files to show the different states <style name="MealButton" parent="@android:style/Widget.ImageButton"> <item name="android:background">@drawable/meal_button</item> </style> <style name="CatButton" parent="@android:style/Widget.ImageButton"> <item name="android:background">@drawable/cat_button</item> </style>
theme

<style name="CustomActivityTheme" parent="@android:style/Theme.Holo.Light"> <item name="android:actionBarStyle">@style/MyActionBar</item> </style> 部分是无关紧要的,因为我创建了一个自定义栏,但是如果我可以这样做并且在里面指示使用上面的ActionBar样式的例子那么那将是很棒的。

我希望我能正确解释这一点。有人可以告诉我这是否可行。我无法想象我需要两个独立版本的应用程序,但也许。我以为我可以在不同的ImageButton内声明这些styles,但我似乎无法为themes执行此操作。

只是为了澄清,问题是如何在第二个块中使用第一块代码并为两个单独的主题执行此操作?谢谢!

1 个答案:

答案 0 :(得分:2)

不幸的是,这是不可能的。

应用程序样式无法以编程方式在应用程序范围内进行控制,因此您无法真正设置标志并让它为每个客户端单独工作。

你可能有一个bash脚本,或者使用maven,通过在每个构建的基础上交换XML文件来自动化构建。

或者如果您的代码库对于两个客户端完全相同,您可以将其移动到库项目中,并创建两个源于它的项目以具有单独的主题。