?android:attr /在向后兼容的应用程序中的用法

我正在尝试使我的ICS(API级别15)应用程序与姜饼(API级别10)兼容,并且对于具有?android:attr/属性的任何布局XML,我都得到了InflateException Error inflating class <Unknown> 。 如果我注释掉这些属性,我可以编译和运行应用程序,但是当然,它看起来不错。

我宁愿不复制我使用的android.R.attr中的所有项目,但目前我失去了另一种方式来做到这一点。

我使用ActionBarSherlock来获得ActionBar的工作,而且我似乎没有使用任何需要支持库的东西(虽然我已经在尝试弄清楚这个过程中包含了它),但这只是这些主题,我坚持的基于资源的资源。

我使用的一些主题资源是:

?android:attr/textColorSecondaryInverse ?android:attr/textAppearanceLarge ?android:attr/dividerVertical ?android:attr/selectableItemBackground ?android:attr/textAppearanceMedium ?android:attr/dividerVertical ?android:attr/dividerHorizontal

Solutions Collecting From Web of "?android:attr /在向后兼容的应用程序中的用法"

正如在文档中一些样式是在更高的API。 例如:

  • dividerVertical自API 11
  • dividerHorizontal自API 11

? 标记用于引用当前主题中的样式。

要处理您的问题,您可以:

  • 使用API​​ 11中的样式,但将它们放到values-v11文件夹中,并使用自定义值或旧API中的不同属性为旧版本支持样式。
  • 从ICS复制必要的样式
  • 不要使用这些样式
  • 使用自定义样式

这取决于你的目标是什么。 当本地风格的应用对你很重要时,第一个build议是有意义的。
如果你想在所有地方都有Holo的风格,那么就没有办法复制它,并作为所有平台的一种风格。
看看这个项目: https : //github.com/Prototik/HoloEverywhere

使用API​​ 11中的样式具体来说android:attr / textAppearanceMedium?android:attr / dividerVertical?android:attr / dividerHorizo​​ntal

最简单的方法是使用下面的代码,如果你需要的话

 <!-- For Horizontal Line--> <View android:layout_width="match_parent" android:layout_height="1dip" android:layout_marginLeft="4dip" android:layout_marginRight="4dip" android:background="#aaa" android:layout_alignParentTop="true"/> <!-- For Vertical Line--> <View android:id="@+id/VerticalLine" android:layout_width="1dip" android:layout_height="wrap_content" android:layout_marginBottom="4dip" android:layout_marginTop="4dip" android:background="#aaa"/> 

请检查android支持v7 – appcompat项目。 它具有许多向后兼容的主题和属性(attr / dividerHorizo​​ntal)

http://developer.android.com/tools/support-library/features.html#v7-appcompat

要使用v7支持,您必须将其作为Android lib项目导入并从您的项目中引用。 它还包含v4的支持,所以你可能要删除在您的libs文件夹中的v4支持:)祝你好运!