【问题标题】:What is an AppCompat theme in android?什么是 Android 中的 AppCompat 主题?
【发布时间】:2013-12-06 02:21:06
【问题描述】:

我刚刚开始进行 Android 开发,所以请耐心等待。我已经下载了 Android Studio,当我开始一个新项目时,它的主题名为Theme.AppCompat.Light(即使在创建新项目时我也选择了 Holo Light)。所以我的问题是,为什么 android 使用它,它有什么用?我尝试将其更改为android:Theme.Holo.Light,但它只是给了我一个错误: java.lang.IllegalStateException:您需要在此活动中使用 Theme.AppCompat 主题(或后代)。

我正在使用此 SDK 配置: 安卓:m​​inSdkVersion="7" android:targetSdkVersion="18"

所以我的问题是,您为什么要使用 AppCompat,以及我必须做些什么才能让我的应用使用 Holo 主题。

我的活动类只是生成的默认值(它扩展了 ActionBarActivity)。

【问题讨论】:

  • 由于某种原因,在我的代码前面放置四个空格不起作用...

标签: android android-appcompat


【解决方案1】:

Holo 主题是在 API 级别 14 中引入的。

将您的 android:minSdkVersion="7" 更改为 android:minSdkVersion="14"

如果你想至少保持 7 个,使用这个项目来获取 Holo 主题:HoloEverywhere

【讨论】:

  • 哦,我尝试使用更高的 API 级别,但我在 13 点停止了:/ 哦,谢谢,现在可以使用了!我假设你打错了,我应该将我的 minSdkVersion 更改为 14,对吗?
  • Holo Everywhere 将要求您在任何地方都使用自定义类,这可能不是一个选项。
  • 您所要做的就是使用他们的活动而不是安卓活动,并使用他们的小部件代替常规的安卓小部件。
  • 这会破坏 任何 其他可用的库。
【解决方案2】:

那是因为您使用的 SDK 7 (Android 2.1) 对 Holo 一无所知。 Android 团队提供了一个看起来(几乎)像 Holo 的兼容性主题。

在一个侧节点上,你至少应该切换到 SKD 10,它会让你的生活更轻松。

【讨论】:

    【解决方案3】:

    看到 API 11 中引入了 ActionBar,因此为了向后兼容,Google 发布了支持库。您在这里Android Support Library 阅读相关内容,您还可以找到如何在您的应用程序中使用它们。Google 不仅为操作栏提供支持库,以向后兼容新设备上可用的许多新功能,并使它们在旧设备上工作。

    【讨论】:

      【解决方案4】:

      创建项目时的默认活动继承自 ActionBarActivity on min api level 15 或更高,我将其更改为 Activity,现在我的活动继承自 Activity。现在我可以更改为 Holo 或其他主题。我猜从 ActionBarActivity 继承需要 appcompat 主题。

      【讨论】:

        猜你喜欢
        • 2016-05-29
        • 2015-08-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-11-26
        • 1970-01-01
        • 2014-12-18
        相关资源
        最近更新 更多