我怎样才能找到?android:attr / dividerVertical的定义?

时间:2013-12-28 17:00:00

标签: android android-layout themes

我想看看divider的定义是否垂直,我不确定属性的含义是什么,但是当点击到intellij中的属性定义时,我将把它带到attrs.xml并显示以下内容,这没有帮助。

<!-- Drawable to use for generic vertical dividers. --> 
<attr name="dividerVertical" format="reference" />

我的具体问题是我正在尝试使用dividerVertical样式实现带有插入列表分隔符的列表。为了做到这一点,我已经定义了自己的插入形状。

<inset xmlns:android="http://schemas.android.com/apk/res/android"
   android:insetLeft="30dip"
   android:insetRight="30dip">
<shape xmlns:android="http://schemas.android.com/apk/res/android"
       android:shape="rectangle">
    <solid android:color="?android:attr/dividerVertical"/>
</shape>
</inset>

这不起作用,因为android不会接受“?android:attr / dividerVertical”作为颜色。它无论如何都不会起作用,因为divider vertical有一个alpha分量,所以我需要知道的是什么颜色和不透明度是分隔线垂直?但理想情况下我想知道如何检查android中任何资源组件的来源,以便我再也不会遇到这个问题。

由于

2 个答案:

答案 0 :(得分:10)

根据developer.android?[<package_name>:][<resource_type>/]<resource_name>用于参考主题属性
因此,对于?android:attr/dividerVertical,您可以导航到 android-sdk \ platforms \ android-16 \ data \ res \ values 。在那里,查看 attrs.xml ,您可以看到

<!-- Drawable to use for generic vertical dividers. -->
<attr name="dividerVertical" format="reference" />

但这只是主题的“参考”。查看目标平台的 themes.xml ,您可以找到许多不同主题的行,例如

<item name="dividerVertical">@drawable/divider_vertical_dark</item>

您想要的行是您正在使用的主题的主题元素中包含的行。最简单的方法是将整个主题元素复制到另一个文本文件并在那里搜索。提出了

<item name="dividerVertical">?android:attr/listDivider</item>

在主题中再次搜索“listDivider”,您可以找到

<item name="listDivider">@drawable/list_divider_holo_dark</item>

这是一个可绘制的。

搜索您可以找到的匹配文件

./platforms/android-16/data/res/drawable-hdpi/list_divider_holo_dark.9.png
./platforms/android-16/data/res/drawable-mdpi/list_divider_holo_dark.9.png
./platforms/android-16/data/res/drawable-xhdpi/list_divider_holo_dark.9.png

这些png恰好是9个补丁,内容由白色方块组成,alpha值为38。

答案 1 :(得分:2)

dividerVertical在您使用的主题中定义。例如,thisHolo.Light主题的分隔图像。 themes.xml中有<item name="dividerVertical">?android:attr/listDivider</item>行。此行正在引用<item name="listDivider">@drawable/list_divider_holo_light</item>,从中可以看出它是可绘制的而不是颜色。