我正在关注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>
答案 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