安卓中的AppCompat主题是什么?

4
我刚开始学习Android开发,请多包涵。我已经下载了Android Studio,但是当我开始一个新项目时,它会使用一个名为Theme.AppCompat.Light的主题(即使我在创建新项目时选择了Holo Light)。所以我的问题是,为什么Android要使用这个主题,它有什么用处?我尝试将其更改为android:Theme.Holo.Light,但它只给我一个错误: java.lang.IllegalStateException:您需要使用Theme.AppCompat主题(或其子类)与此活动。

我使用的SDK配置如下: android:minSdkVersion="7" android:targetSdkVersion="18"

那么,为什么要使用AppCompat,我该怎么做才能让我的应用程序使用Holo主题呢?

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


由于某种原因,在这里在我的代码前面放置四个空格不起作用... - Squeazer
4个回答

3

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

android:minSdkVersion="7"更改为android:minSdkVersion="14"

如果您至少想保持7,可以使用此项目获取Holo主题:HoloEverywhere


哦,我曾尝试使用更高的API级别,但是我停留在13:/ 好吧,谢谢,现在它可以工作了!我猜你打错了字,我应该把我的minSdkVersion改为14,对吗? - Squeazer
Holo Everywhere 将要求你在任何地方使用自定义类,这可能不是一个选项。 - meredrica
你所要做的是使用他们的activity替代Android activity并使用他们的widgets代替常规的Android widgets。 - Tyler
这将会破坏任何其他可用的库。 - meredrica

2

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

顺便说一下,您应该至少切换到SDK 10,这将使您的生活变得更加轻松。


1
ActionBar在API 11中引入,为了向后兼容,Google发布了支持库。您可以在此处Android Support Library阅读有关此内容的信息,并了解如何在应用程序中使用它们。Google不仅为Action Bar提供支持库,还为许多新设备可用的新功能提供向后兼容性支持,使其在旧设备上运行。

0
创建项目时的默认活动继承自API级别15或更高版本的ActionBarActivity,我将其更改为Activity,现在我的活动继承自Activity。现在我可以更改为Holo或其他主题。我猜从ActionBarActivity继承需要appcompat主题。

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