?attr/selectableItemBackground的定义和确切函数

J0h*_*j0h 3 android android-support-library

?attr/selectableItemBackground通过android偶然发现了表达式- 在xml中使用支持v7应用selectableItemBackground.
我想查看该表达式的确切功能,因为我不明白开头的问号是什么,它是如何完成它的任务的.

它说它是支持库v7的一部分,但我尝试查找它并且找不到有用的洞察力

  • 究竟它,
  • 在哪里定义和
  • 它究竟是做什么的.

Kar*_*uri 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>
Run Code Online (Sandbox Code Playgroud)

假设在你的一个布局文件中你有这个:

<TextView
    ...
    android:textColor="?android:attr/textColorPrimary" />
Run Code Online (Sandbox Code Playgroud)

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