60

在使用ActionBarSherlockin xml 时:

<item name="android:actionBarStyle">@style/Widget.Styled.ActionBar</item>

我收到了这个错误:

android:actionBarStyle requires API level 11 (current min is 8) error

我正在使用它将带有操作栏的应用程序反向移植到 2.2 设备。

如何同时使用它们:

 <item name="actionBarStyle">@style/Widget.Styled.ActionBar</item>
 <item name="android:actionBarStyle">@style/Widget.Styled.ActionBar</item>
4

4 回答 4

147

另一种选择是使用tools:targetApi需要tools命名空间的属性。@TargetApi这与您可以在 java 文件中使用的注解类似。

<resources xmlns:tools="http://schemas.android.com/tools">

<style name="MyThemes.MyTheme">
    <item name="actionBarStyle">@style/Widget.Styled.ActionBar</item>
    <item name="android:actionBarStyle" tools:targetApi="11">@style/Widget.Styled.ActionBar</item>
</style>

</resources>

请注意标签xmlns:tools="http://schemas.android.com/tools"中的,因为它是必需的。<resources>

于 2013-08-13T18:30:09.030 回答
76

您只能使用:

<item name="actionBarStyle">@style/Widget.Styled.ActionBar</item> 

因为您可以得到错误,所以您android:actionBarStyle在 API 级别 11 可用。


如果您希望能够ActionBar在所有 API 级别中设置相同的样式,则需要为所选 API 级别创建不同的文件夹并在这些文件夹中创建新的style.xml/文件。themes.xml

例如:

- res
  -- values
     -- styles.xml
     -- themes.xml // API LEVEL 8+
 -- values-v11
     -- styles.xml
     -- themes.xml // API LEVEL 11+
 -- values-v14
     -- styles.xml
     -- themes.xml // API LEVEL 14+

我能想到的第二件事是小心你在不同的 API 级别包含哪些主题到你当前的主题中。

例如,对于 API 级别 8:您将使用@style/Theme.Sherlock.Light.DarkActionBar并且必须仅使用actionBarStyle. 在为 API 级别 14+ 设置操作栏时,actionBarStyleHolo.Light不需要android:actionBarStyle.

于 2013-03-11T12:59:15.697 回答
7

您可以在 Eclipse 中选择错误,然后按“删除”键。然后只需运行该项目,它就会工作。

每次修改 XML 时都会删除这些错误。

于 2013-03-11T13:51:06.567 回答
7

这取决于您要定位的 SDK 版本:

目标设计低于 11:

在您AndroidManifest.xml使用时:

<uses-sdk android:minSdkVersion="8" android:targetSdkVersion="x" android:maxSdkVersion="10"/>

x 8-10 之间的任何值(取决于您的代码)

根据您的风格使用:

<item name="actionBarStyle">@style/Widget.Styled.ActionBar</item>

定位任何设备:

在您AndroidManifest.xml使用时:

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

示例中使用的 16ActionBarSherlock可以大于或等于 11(取决于您的代码)

在你的风格使用两者:

<item name="actionBarStyle">@style/Widget.Styled.ActionBar</item> 
<item name="android:actionBarStyle">@style/Widget.Styled.ActionBar</item>

第一个用于ActionBarSherlock主题,第二个用于在已经支持的 android 设备中使用相同的主题ActionBar

编辑:清除 Lint 警告(可能出现的 XML 文件中的红色下划线):

清除皮棉警告

于 2013-03-11T14:27:21.827 回答