android – 在支持v7的xml中应用selectableItemBackground

即使在我的应用程序中包含Android支持v7

添加android:background="?android:attr/selectableItemBackground"

让我的IDE,Eclipse抛出一个错误(阻止我编译),通知我selectableItemBackground只是最小的Api 11和以上。

如何将此属性添加到XML中的背景?

假设从高级图书馆复制和粘贴不是一个解决scheme

由于该属性是在库中定义的(支持v7),所以您可以将其用作用户定义的属性:即不带android:前缀:

 android:background="?attr/selectableItemBackground" 

你看到的错误指出?android:attr/selectableItemBackground可用于API版本> = 11。

这里是selectedItemBackground。 你可以在/platforms/android-14/data/res/themes.xml中find它

 <selector xmlns:android="http://schemas.android.com/apk/res/android" android:exitFadeDuration="@android:integer/config_mediumAnimTime"> <item android:state_window_focused="false" android:drawable="@color/transparent" /> <!-- Even though these two point to the same resource, have two states so the drawable will invalidate itself when coming out of pressed state. --> <item android:state_focused="true" android:state_enabled="false" android:state_pressed="true" android:drawable="@drawable/list_selector_background_disabled" /> <item android:state_focused="true" android:state_enabled="false" android:drawable="@drawable/list_selector_background_disabled" /> <item android:state_focused="true" android:state_pressed="true" android:drawable="@drawable/list_selector_background_transition" /> <item android:state_focused="false" android:state_pressed="true" android:drawable="@drawable/list_selector_background_transition" /> <item android:state_focused="true" android:drawable="@drawable/list_selector_background_focused" /> <item android:drawable="@color/transparent" /> </selector> 

你可以在你的Android SDK目录中finddrawables

 ../platforms/android-14/data 

不是这方面的专家,但似乎你需要基于主题的平台版本。 官方指南很好地解释了这个过程。

您必须为每个版本创build不同的XML文件,并将其保存在res/values-v7res/values-v11等文件中,然后使用这些样式进行查看。 像这样的东西:

res/values-v7

 <style name="LightThemeSelector" parent="android:Theme.Light"> ... </style> 

res/values-v11

 <style name="LightThemeSelector" parent="android:Theme.Holo.Light"> <item name="selectableItemBackground">?android:attr/selectableItemBackground</item> ... </style> 

然后使用风格的观点:

 <TextView style="@style/LightThemeSelector" android:text="@string/hello" /> 

希望这可以帮助。 干杯。