Android-在 xml 中应用 selectableItemBack,并支持 v7

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

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

使我的 IDE,Eclipse 抛出一个错误(阻止我编译) ,通知我 selectableItemBack 只适用于最小 Api 11及以上版本。

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

假设从高级库复制和粘贴不是解决方案

82528 次浏览

下面是 selectedItemBack,可以在/Platform/android-14/data/res/themes.xml 中找到它

<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 目录中找到可绘制的内容

../platforms/android-14/data

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

您必须为每个版本创建不同的 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" />

希望这个能帮上忙。 干杯。

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

android:background="?attr/selectableItemBackground"

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