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

Difference between ?selectableItemBackground, ?android:selectableItemBackground and ?android:attr/selectableItemBackground in Android?

有什么区别:

android:background="?selectableItemBackground"

android:background="?attr/selectableItemBackground"

android:background="?android:selectableItemBackground"

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

在 Android?

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

这里,

android:background="?selectableItemBackground"

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

android:background="?android:selectableItemBackground"

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

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

此处attr 的使用适用于为当前主题定义的属性。即,如果您将应用程序主题设置为轻型版本,则将应用轻型主题的 selectableItemBackground。

并且您可以定义自己的值,无需使用 android 前缀即可访问这些值。