【问题标题】:Create two separate themes in an app在应用程序中创建两个单独的主题
【发布时间】:2013-05-10 19:38:08
【问题描述】:

我一直在使用自定义styles,我做得很好,但现在我很困惑如何将完全不同的styles 用于CompoundButtonsSpinnersImageButtons 等小部件.. 我为每种类型定制了Buttons,每个类型都有自己的drawable,具体取决于其状态。我已经弄清楚了,但我需要两个完全不同的Themes(例如,当按下状态时使用meal_orange ImageButton,并使用meal_blue 表示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 样式示例,那就太好了。

我希望我正确地解释了这一点。有人可以告诉我这是否可能。我无法想象我需要两个不同版本的应用程序,但也许。我以为我可以在不同的themes 中声明这些styles,但我似乎无法为widgets 做到这一点。

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

【问题讨论】:

  • 我真的很困惑。您想根据按钮的状态为按钮设置不同的样式吗?这是你的最终目标吗?
  • 我已经为他们准备了两个不同的图标,但只有两组。每个Button 都有一个表示按下的图标和一个表示正常的图标。但是我有两套……比如说,一套给 A 公司,一套给 B 公司。如果由 A 公司下载,我想让它使用第 1 组按钮,如果由 B 公司下载,则使用第 2 组按钮。我希望有道理
  • 没有向他们发送单独的 APK,我不确定你是否能做到——请参阅 stackoverflow.com/questions/3246447/…
  • @Catherine 感谢您的回复。我不确定后期是否真的对我有帮助,我正在努力避免不得不制作两个单独的应用程序来跟上。问题是,这是一个专业应用程序,仅授权给订阅我们服务的客户,我们在发送设备之前加载应用程序。我想最简单的方法是将所有drawablesstyles 命名为相同,并且当我有更新工作时只需要更新java 和layout 文件。但是如果可能的话,让一个带有从服务器发送的标志的应用程序使用某个theme 会更理想
  • 那篇文章很有帮助,因为您想要以编程方式应用主题,而根据它这是不可能的。

标签: android widget styles themes


【解决方案1】:

很遗憾,这是不可能的。

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

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

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

【讨论】:

  • 感谢您的快速回复。这就是我在上次选举中投票给你的原因 :) 听起来这可能是一个很好的可能性,但我将不得不研究如何准确地做到这一点。只是我还是应该有这种可能?我一直在寻找和思考如何做到这一点,我需要在接下来的几天内做出决定。我的想法是,您应该能够拥有一个包含不同stylesTheme,并以编程方式更改Theme 以及相应的styles
  • 我对我的 OP 的最后评论中的“解决方案”对您来说是否合适?
  • 再次感谢您的快速回复和解释。如果你能给我一个为什么这是不可能的理由,或者如果我的“解决方案”看起来可行,那就太好了。 注意代码现在完全一样,但我必须让它保持灵活,因为你知道推销员是怎样的;)
  • @codeMagic 您的最后一条评论似乎是最好的解决方案。我从一个为样式制作半解析器的人那里看到了很久以前的帖子。我看看能不能找到。如果运行良好,它可能只允许您使用一个 apk。
  • 好的,我希望我所追求的可以在框架内实现,但猜不到。谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-17
  • 2012-08-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-11
相关资源
最近更新 更多