样式操作栏使用Theme.AppCompat

时间:2015-04-03 10:34:37

标签: android

我正在关注Android培训,为行动栏设计样式。

我因android:theme=@style/MyActionBar而面临错误。

我想知道如何设置操作栏的样式。

 <application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/MyActionBar" >
  

IllegalStateException:您需要使用Theme.AppCompat主题   这个活动

我认为错误来自:

<style name="CustomActionBarTheme"
               parent="@android:style/Theme.Holo.Light.DarkActionBar">
            <item name="android:actionBarStyle">@style/MyActionBar</item>
        </style>

所以我将其修改为

<style name="CustomActionBarTheme"
           parent="@android:style/Theme.AppCompat.Light ">
    <item name="android:actionBarStyle">@style/MyActionBar</item>
</style>

我遇到以下错误:

  

错误:检索项目的父项时出错:找不到资源   匹配给定的名称&#39; @android:style / Theme.AppCompat.Light&#39;。

我在训练解释时创建了一个新文件

RES /值/的themes.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <!-- the theme applied to the application or activity -->
    <style name="CustomActionBarTheme"
           parent="@android:style/Theme.Holo.Light.DarkActionBar">
        <item name="android:actionBarStyle">@style/MyActionBar</item>
    </style>

    <!-- ActionBar styles -->

    <style name="MyActionBar"
       parent="@android:style/Widget.Holo.Light.ActionBar.Solid.Inverse">
    <item name="android:background">#aaaaaa</item>
</style>
</resources>

这是清单

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.helloworld"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="16"
        android:targetSdkVersion="21" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
       android:theme="@style/MyActionBar" >
        <activity
            android:name="com.example.helloworld.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>
        <activity
        android:name="com.example.helloworld.DisplayMessageActivity"
        android:label="@string/title_activity_display_message"
        android:parentActivityName="com.example.Helloworld.MainActivity" >
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value="com.example.Helloworld.MyActivity" />
    </activity>

    </application>

</manifest>

3 个答案:

答案 0 :(得分:3)

按如下方式编辑您的风格:

<style name="CustomActionBarTheme"
    parent="@style/Theme.AppCompat.Light.DarkActionBar">
    <item name="android:actionBarStyle">@style/MyActionBar</item>

    <!-- Support library compatibility -->
    <item name="actionBarStyle">@style/MyActionBar</item>
</style>

<!-- ActionBar styles -->
<style name="MyActionBar"
    parent="@style/Widget.AppCompat.Light.ActionBar.Solid.Inverse">
    <item name="android:background">@drawable/actionbar_background</item>

    <!-- Support library compatibility -->
    <item name="background">@drawable/actionbar_background</item>
</style>

您必须使用支持库

name="background">@drawable/actionbar_background</item> 

而不是

name="android:background">@drawable/actionbar_background</item>

然后在你的清单中使用这个主题...... 在使用之前,如果您使用的是Android Studio,请不要忘记添加支持:build.gradle中的appcompact依赖项... 感谢...

答案 1 :(得分:2)

appcompat v7 libary有两种文件。一个是jar,另一个是res,例如string.xml styles.xml。您的问题意味着您没有导入res appcompat个库{}}。因此,将.../Android-SDK/sdk/extras/android/support/v7/appcompat项目导入Eclipse,然后将其添加为主项目的libary项目。

答案 2 :(得分:0)

我认为您尚未在项目中添加appcompat库的引用。将它的引用添加到您的项目并检查

https://developer.android.com/tools/support-library/setup.html