在Android Activity中应用自定义主题

时间:2015-05-07 12:41:04

标签: android android-actionbar android-theme android-actionbar-compat

我想在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>

2 个答案:

答案 0 :(得分:2)

由于您可能将AppBaseTheme用于应用程序主题,因此还需要AppCompat主题用于覆盖活动: 您的MyTheme需要拥有父Theme.AppCompatTheme.AppCompat.Light,而不是当前的Holo主题。

答案 1 :(得分:1)

按照以下链接设计自定义主题 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>