selectableItemBackground

selectableItemBackground

我偶然发现了?attr/selectableItemBackgroundandroid - apply selectableItemBackground in xml with support v7的表达。
我想研究一下这个表达式的确切功能,因为我不明白开头的问号代表什么,以及它是如何完成任务的。
它说它是支持库v7的一部分,但我试图查找它,却找不到有用的信息
到底是什么,
定义和
它到底做了什么。

最佳答案

语法?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()时),文本视图可以有白色或黑色文本颜色。

10-08 15:36