【问题标题】:Using Holo themes in conjunction with AppCompatActivity将 Holo 主题与 AppCompatActivity 结合使用
【发布时间】:2015-11-07 01:36:35
【问题描述】:

我在 android 中有一个相当简单的应用程序,它使用支持库为在低于 11 的 API 上运行的设备提供操作栏,因此我的主要活动扩展了 AppCompatActivity
我目前的应用主题如下:

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <!-- Customize your theme here. -->
</style>

在运行了一些测试并确保应用按预期运行后,我决定为在 API 级别 14 及以上运行的设备设置主题,如下所示:

<style name="AppTheme" parent="android:Theme.Holo.Light.DarkActionBar">
    <!-- Customize your theme here. -->
</style>

从那以后,该应用程序一直在启动时崩溃。
logcat 显示正在抛出异常,它显示以下内容:

您需要在此活动中使用 Theme.AppCompat 主题(或后代)。

这是否意味着我必须只使用 AppCompat 主题,而不考虑设备的 API?
如果不是,那我应该如何解决这个问题?

【问题讨论】:

    标签: android android-support-library android-resources android-theme android-styles


    【解决方案1】:

    这是否意味着我必须只使用 AppCompat 主题,而不考虑设备的 API?

    是的。或者,停止使用appcompat-v7,并从Activity 继承。

    【讨论】:

    • 难道没有任何解决方法可以让应用支持旧设备,并且仍然能够为新设备提供花哨的主题?
    • @TimorGruber:让您的花哨主题基于Theme.AppCompat 而不是Theme.Holo。我不清楚你在做什么“花哨”,这将适用于Theme.Holo,但不适用于Theme.AppCompat。有较旧的、已弃用的操作栏向后移植(例如 ActionBarSherlock),但目前很难推荐它们。或者,从 Android 2.x is under 5% of the Google Play ecosystem at this time 开始,将您的 minSdkVersion 设置为 15 并切换到原生操作栏。
    • 花式我的意思是时尚,因为 Holo 主题看起来比 AppCompat 主题更“现代”。无论如何,感谢您的帮助,我会考虑您的建议。
    • @TimorGruber:考虑到AppCompat 主题旨在在一定范围内模仿Android 5.0+ 的默认设置Theme.Material,您对“现代”的定义很有趣。
    • @CommonsWare Sassy!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-22
    • 1970-01-01
    相关资源
    最近更新 更多