Android 当我想使用 Holo 时,studio 切换到 appcompat
Android studio swtiches to appcompat when I want to use Holo
我正在学习 developer.android.com 的入门教程,希望看到我的应用使用 Holo 主题。不幸的是,Android studio 不断将应用改回 Theme.AppCompat.Light.DarkActionBar 主题。该应用程序有两个活动。第一个有一个 EditText 和一个 Button,第二个 activity 只显示一个 TextView。在添加第二个 activity 之前,我可以将 Holo 主题应用到第一个 activity,方法是打开第一个 activity 的 .xml,然后单击 "Preview"然后从预览窗格的顶部选择 Holo 主题。这工作正常。然后我创建了第二个 activity,并做了同样的事情,但是现在当我 运行 应用程序时,它没有使用 Holo 主题。
清单有:
<application
...
android:theme="@style/AppTheme" >
和样式文件:
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
我已经尝试将该行更改为 <style name="android:Theme.Holo">
,但是当我 运行 它时,这会导致应用程序崩溃。
本教程似乎是在假设 Android Studio 的默认 Hello World 活动将默认为 Holo 的情况下编写的,但事实似乎并非如此。我不认为这是因为我试图支持的版本:
android {
compileSdkVersion 21
buildToolsVersion "21.1.2"
defaultConfig {
applicationId "com.example.me.myfirstapp"
minSdkVersion 16
targetSdkVersion 21
versionCode 1
versionName "1.0"
}
所以我的问题是双重的。如何使用 Holo 主题让应用程序 运行,以及如何让 Android Studio 在我每次在项目中创建新的 activity 时停止切换回 AppCompat?
您收到的错误消息是什么?我的猜测是教程中的示例 Activity
可能 extends
ActionBarActivity
class。扩展上述 class 时,您必须使用 AppCompat
主题(或后代),否则应用程序将崩溃,您将收到如下错误:
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.myApp/com.example.myApp.MainActivity}: java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity.
这是个坏消息。好消息是您在示例中尝试使用的 Theme.Holo
在美学上与 Theme.AppCompat
相同。所以只需更改:
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
至:
<style name="AppTheme" parent="Theme.AppCompat">
看起来您已经实现了 Theme.Holo
主题。
按照 Eugen 在评论中发布的建议,我更改了我的 类,因此它们扩展了 Activity 而不是 ActionBarActivity。
我在 android 工作室的项目中成功使用了 holo 主题。
方法如下:
在应用程序gradle中,使minSdk、compilesdk和targetsdkversion相同(以防止提示appcompat库的回退行为的必要性)
在应用 gradle 文件的依赖项部分删除 appcompat lib 条目。
现在您只需在应用的 styles.xml 中使用 android:Theme.Holo.Light。
我正在学习 developer.android.com 的入门教程,希望看到我的应用使用 Holo 主题。不幸的是,Android studio 不断将应用改回 Theme.AppCompat.Light.DarkActionBar 主题。该应用程序有两个活动。第一个有一个 EditText 和一个 Button,第二个 activity 只显示一个 TextView。在添加第二个 activity 之前,我可以将 Holo 主题应用到第一个 activity,方法是打开第一个 activity 的 .xml,然后单击 "Preview"然后从预览窗格的顶部选择 Holo 主题。这工作正常。然后我创建了第二个 activity,并做了同样的事情,但是现在当我 运行 应用程序时,它没有使用 Holo 主题。
清单有:
<application
...
android:theme="@style/AppTheme" >
和样式文件:
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
我已经尝试将该行更改为 <style name="android:Theme.Holo">
,但是当我 运行 它时,这会导致应用程序崩溃。
本教程似乎是在假设 Android Studio 的默认 Hello World 活动将默认为 Holo 的情况下编写的,但事实似乎并非如此。我不认为这是因为我试图支持的版本:
android {
compileSdkVersion 21
buildToolsVersion "21.1.2"
defaultConfig {
applicationId "com.example.me.myfirstapp"
minSdkVersion 16
targetSdkVersion 21
versionCode 1
versionName "1.0"
}
所以我的问题是双重的。如何使用 Holo 主题让应用程序 运行,以及如何让 Android Studio 在我每次在项目中创建新的 activity 时停止切换回 AppCompat?
您收到的错误消息是什么?我的猜测是教程中的示例 Activity
可能 extends
ActionBarActivity
class。扩展上述 class 时,您必须使用 AppCompat
主题(或后代),否则应用程序将崩溃,您将收到如下错误:
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.myApp/com.example.myApp.MainActivity}: java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity.
这是个坏消息。好消息是您在示例中尝试使用的 Theme.Holo
在美学上与 Theme.AppCompat
相同。所以只需更改:
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
至:
<style name="AppTheme" parent="Theme.AppCompat">
看起来您已经实现了 Theme.Holo
主题。
按照 Eugen 在评论中发布的建议,我更改了我的 类,因此它们扩展了 Activity 而不是 ActionBarActivity。
我在 android 工作室的项目中成功使用了 holo 主题。 方法如下:
在应用程序gradle中,使minSdk、compilesdk和targetsdkversion相同(以防止提示appcompat库的回退行为的必要性)
在应用 gradle 文件的依赖项部分删除 appcompat lib 条目。
现在您只需在应用的 styles.xml 中使用 android:Theme.Holo.Light。