我偶然发现了?attr/selectableItemBackground
到android - apply selectableItemBackground in xml with support v7的表达
我想查看该表达式的确切功能,因为我不明白开头的问号是什么,以及它如何完成它的任务。
它说它是支持库v7的一部分,但我试过查找它并且找不到有用的洞察力
答案 0 :(得分:5)
语法?attr/something
表示“使用为当前主题定义的名为{something}的属性的值”。
selectableItemBackground
是应用主题中属性的名称(通常位于styles.xml
)。您可能没有在主题中为其设置值,但它可能在您扩展的父主题中具有值,因此您的主题也具有该值。
当您在使用不同主题的地方使用相同的布局时,此语法很有用。例如,假设您有两个主题:
<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>
假设你的一个布局文件中有这个:
<TextView
...
android:textColor="?android:attr/textColorPrimary" />
根据布局膨胀时使用的这两个主题中的哪一个(例如,当您使用setContentView()
时),TextView可以是白色或黑色文本颜色。