“?attr/selectableItemBackground”的定义和确切功能是什么?

4
我通过android - apply selectableItemBackground in xml with support v7发现了表达式?attr/selectableItemBackground。我想研究一下这个表达式的确切功能,因为我不明白开头的问号代表什么,以及它如何完成任务。
它说这是支持库v7的一部分,但我尝试查找并没有找到有用的见解,包括:
- 它到底是什么, - 它在哪里定义, - 它具体做了什么。
1个回答

8

语法?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 可能具有白色或黑色文本颜色。


谢谢,我现在找到了。 :) - J0hj0h

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接