Android- 在特定 Activity 中更改主题

3

我的应用程序的基础主题是:

<style name="AppTheme" parent="@android:style/Theme.Holo.Light">
        <item name="android:actionBarStyle">@style/MyActionBar</item>
        <item name="android:actionBarTabTextStyle">@style/MyActionBarTabText</item>
        <item name="android:actionBarTabBarStyle">@style/MyActionBarTabBar</item>
        <item name="android:actionBarTabStyle">@style/MyActionBarTabView</item>
        <item name="android:popupMenuStyle">@style/MyMenu</item>
        <!--<item name="android:actionBarStyle">@style/window_action_bar_style</item>-->
        <item name="android:layout_width">wrap_content</item>
        <item name="android:layout_height">wrap_content</item>
        <item name="android:windowContentOverlay">@null</item>
    </style>

我希望将这个主题应用到一个活动中。

<style name="AppTheme" parent="Theme.AppCompat.Light">
</style>

然而,当我这样做时,我无法在该活动中访问SwitchCompat小部件:

<android.support.v7.widget.SwitchCompat/>

我在这里做错了什么?任何建议或解决方案都将不胜感激。当我尝试覆盖特定活动中的基本主题并尝试访问SwitchCompat小部件时,就会出现问题。我的项目已经相当大,我无法更改整个应用程序的基本主题,因为我将不得不对ActionBars和其他视图进行更改。如何解决这个问题?


你正在使用appcompat吗?并且还有这个@android:style/Theme.Holo.Light。你是否应该在所有地方都使用appcompat派生的主题? - Raghunandan
不,这正是我担心的。我没有使用appcompat,并且一直在寻找一个特定活动的解决方法。我想我必须改变基础主题并对整个应用程序进行更改。 - user1841702
在这种情况下,我不明白为什么你要使用switchcompact。 - Raghunandan
这是因为我想在一个活动中使用Material Design开关,而不是默认的开关。 - user1841702
本地支持的版本为棒棒糖。因此,如果您想在其他(低于棒棒糖)版本中使用材料设计,则需要使用AppCompat。 - Raghunandan
1个回答

13

只需在 AndroidManifest.xml 中像这样使用您的自定义主题

<activity
    android:name=".SignupActivity"
    android:label="@string/title_activity_signup"
    android:theme="@style/SignupTheme">
</activity>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接