如何以编程方式获取父主题

时间:2013-11-28 13:30:33

标签: android android-theme

假设我在themes.xml声明了以下自定义主题:

<style name="Theme.Custom.Light" parent="@style/Theme.Sherlock.Light">
    <item name="android:actionBarTabStyle">@style/Widget.Custom.Light.ActionBar.TabView</item>
    <item name="android:actionBarTabTextStyle">@style/Widget.Custom.Light.ActionBar.TabText</item>
    <item name="android:actionMenuTextColor">@color/ab_item_text</item>
    <item name="android:actionMenuTextAppearance">@style/TextAppearance.Custom.Light.Widget.ActionBar.Menu</item>
</style>

从应用程序上下文中,我们可以使用

获取当前应用的Theme
Theme myTheme = appContext.getTheme();

而且,我们可以使用以下方式获取主题的资源ID:

int themeResId = appContext.getApplicationInfo().theme;

我想要什么

从我的代码中,我想检查以编程方式这是我正在使用的主题的父主题,以便区分SherlockSherlock.Light&amp; Sherlock.Light.DarkActionBar

在上面的示例中,我想知道我正在使用Sherlock主题的Light变体。

注意: 您可能想知道为什么我需要检查父项,如果我在xml中声明它。原因是我处于一个我实际上不知道的特殊情况,但这超出了这个问题的范围。

1 个答案:

答案 0 :(得分:0)

 Theme myTheme = appContext.getTheme();

您可以使用

获取其父类
 Theme myThemeParent = appContext.getTheme().getClass().getSuperclass();

并将其与 Sherlock .getclass()进行比较,以验证它是否为父级。同样,对于其他比较。