在 Android Activity 中应用自定义主题
Apply custom theme in Android Activity
我想在 android 操作栏标题中应用自定义主题,但是当我尝试这样做时出现错误。
我的清单:
<activity
android:name="com.lifegoal.eshop.Recharge_Activity"
android:theme="@style/MyTheme"
android:label="Mobile Recharge" >
我的价值观 v11 文本
<!--
Base application theme for API 11+. This theme completely replaces
AppBaseTheme from res/values/styles.xml on API 11+ devices.
-->
<style name="AppBaseTheme" parent="Theme.AppCompat.Light">
<!-- API 11 theme customizations can go here. -->
</style>
<style name="MyTheme" parent="@android:style/Theme.Holo.Light">
<item name="android:actionBarStyle">@style/MyActionBar</item>
</style>
<style name="MyActionBar" parent="@android:style/Widget.Holo.Light.ActionBar">
<item name="android:titleTextStyle">@style/TitleBarTextColor</item>
<item name="android:background">@color/color_blue</item>
</style>
我的Logcat输出
05-07 17:56:40.655: E/AndroidRuntime(1647): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.lifegoal/com.lifegoal.eshop.Recharge_Activity}: java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity.
05-07 17:56:40.655: E/AndroidRuntime(1647): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2195)
如果有人知道,请帮助我...
<style name="TitleBarTextColor" parent="@style/TextAppearance.AppCompat.Widget.ActionBar.Title">
<item name="android:textColor">@color/color_white</item>
</style>
</resources>
由于您可能将 AppBaseTheme 用作您的应用程序主题,因此您还需要一个 AppCompat 主题来覆盖活动:
您的 MyTheme 需要有父主题 Theme.AppCompat
或 Theme.AppCompat.Light
,而不是当前的 Holo 主题。
按照以下link设计自定义主题
http://jgilfelt.github.io/android-actionbarstylegenerator/
下载主题后,您只需将文件粘贴到所需的文件夹中,然后在里面 AndroidManifesh.xml 您需要写下您的自定义主题名称。
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/custom_theme_name" >
<activity
android:name=".MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
我想在 android 操作栏标题中应用自定义主题,但是当我尝试这样做时出现错误。
我的清单:
<activity
android:name="com.lifegoal.eshop.Recharge_Activity"
android:theme="@style/MyTheme"
android:label="Mobile Recharge" >
我的价值观 v11 文本
<!--
Base application theme for API 11+. This theme completely replaces
AppBaseTheme from res/values/styles.xml on API 11+ devices.
-->
<style name="AppBaseTheme" parent="Theme.AppCompat.Light">
<!-- API 11 theme customizations can go here. -->
</style>
<style name="MyTheme" parent="@android:style/Theme.Holo.Light">
<item name="android:actionBarStyle">@style/MyActionBar</item>
</style>
<style name="MyActionBar" parent="@android:style/Widget.Holo.Light.ActionBar">
<item name="android:titleTextStyle">@style/TitleBarTextColor</item>
<item name="android:background">@color/color_blue</item>
</style>
我的Logcat输出
05-07 17:56:40.655: E/AndroidRuntime(1647): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.lifegoal/com.lifegoal.eshop.Recharge_Activity}: java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity.
05-07 17:56:40.655: E/AndroidRuntime(1647): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2195)
如果有人知道,请帮助我...
<style name="TitleBarTextColor" parent="@style/TextAppearance.AppCompat.Widget.ActionBar.Title">
<item name="android:textColor">@color/color_white</item>
</style>
</resources>
由于您可能将 AppBaseTheme 用作您的应用程序主题,因此您还需要一个 AppCompat 主题来覆盖活动:
您的 MyTheme 需要有父主题 Theme.AppCompat
或 Theme.AppCompat.Light
,而不是当前的 Holo 主题。
按照以下link设计自定义主题
http://jgilfelt.github.io/android-actionbarstylegenerator/
下载主题后,您只需将文件粘贴到所需的文件夹中,然后在里面 AndroidManifesh.xml 您需要写下您的自定义主题名称。
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/custom_theme_name" >
<activity
android:name=".MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>