关于android:?attr / selectableItemBackground的定义和确切功能

Definition and exact function of ?attr/selectableItemBackground

我偶然发现了通过Android的表达式?attr/selectableItemBackground-在支持v7的xml中应用selectableItemBackground。
我想研究该表达式的确切功能,因为我不了解开头的问号表示什么以及它如何精确地完成其任务。

它说它是支持库v7的一部分,但是我尝试查找它,但是找不到对

  • 到底是什么
  • 在哪里定义和
  • 它到底做了什么。

语法?attr/something的意思是"使用为当前主题定义的名为{something}的属性的值"。

selectableItemBackground是应用程序主题中的属性名称(通常在styles.xml中)。 您可能没有在主题中为其设置值,但是在您扩展其父主题的主题中可能有一个值,因此您的主题也具有该值。

当您可能在使用不同主题的地方使用相同布局时,此语法很有用。 例如,假设您有两个主题:

1
2
3
4
5
6
7
8
9
<style name="Theme.Foo" parent="...">
    <item name="android:textColorPrimary">@android:color/white</item>
    ...
</style>

<style name="Theme.Bar" parent="...">
    <item name="android:textColorPrimary">@android:color/black</item>
    ...
</style>

并假设在一个布局文件中具有以下内容:

1
2
3
<TextView
    ...
    android:textColor="?android:attr/textColorPrimary" />

根据布局放大时(例如,当您使用setContentView()时)使用的这两个主题中的哪个,TextView可以具有白色或黑色文本颜色。