android - 在应用程序中创建两个单独的主题

标签 android widget styles themes

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

我当前拥有的一个小示例位于我的 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>

我最初创建了一个自定义主题,类似于

<style name="CustomActivityTheme" parent="@android:style/Theme.Holo.Light">
    <item name="android:actionBarStyle">@style/MyActionBar</item>
</style>

ActionBar 部分是无关紧要的,因为我创建了一个自定义栏,但如果我可以做到这一点,并且在此处指示使用上面的 ImageButton 样式示例,那么这将很棒。

我希望我的解释是正确的。有人可以告诉我这是否可能。我无法想象我需要该应用程序的两个单独版本,但也许吧。我以为我可以在不同的主题中声明这些样式,但我似乎无法为小部件做到这一点。

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

最佳答案

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

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

您也许可以使用 bash 脚本或使用 maven,通过在每次构建的基础上交换 XML 文件来自动化构建。

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

关于android - 在应用程序中创建两个单独的主题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16489657/

相关文章:

android - android Widget中的动态布局

c# - 以编程方式修改样式内的属性

Android TextView 完全居中文本

java - 第二次点击 Android 主屏幕小部件不起作用

php - html textarea mysql insert 为 HTML 和 android 保留新行

gwt - 如何使用 uiBinder 将复合小部件嵌套到主 ui.xml 文件中?

php - CSS div 将内容扩展到更多行

wpf - IsPressed 触发器(按钮)导致异常

java - 如何在Android应用程序中使用ExecutorService关闭

android - 如何使用终端或命令提示符检查“Active Build Variant”?