Android中的?selectableItemBackground,?android:selectableItemBackground和?android:attr / selectableItemBackground之间的区别?

有什么区别:

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

在Android?

这里,

 android:background="?selectableItemBackground" 

是来自appCompat库的属性引用,因此它应用于旧版本的android并且不需要android前缀。

 android:background="?android:selectableItemBackground" 

是由平台提供的属性,可能不支持较旧的Android版本,但仅限于它们被引入的版本。

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

这里使用attr适用于为当前主题定义的属性。 即如果您的应用程序主题设置为浅色版本,则将应用lightableItemBackground of light theme。

您可以定义自己的值,无需使用Android前缀即可访问。

他们都做同样的工作。 唯一的区别是android前缀适用于android 3.0及以上版本,如果你想使用android 2.3及以下相同的属性,你必须删除android前缀。 谢谢