Android ListView默认分隔符样式/属性

21

我有一个LinearLayout视图,我想添加一个分隔线,使其看起来与默认的ListView控件完全相同。我正在尝试复制默认Android(Nexus S 2.3.3)联系人应用程序中的编辑联系人功能,并且我认为LinearLayout在性能方面是最好的选择。

我正在使用下面展示的代码复制分隔线:

    <View
    android:id="@+id/Separator"
    android:layout_width="fill_parent"
    android:layout_height="?android:attr/dividerHeight"
    android:background="?android:attr/divider"/>

我怎样才能访问默认的分隔符颜色或可绘制对象,以及分隔符高度?我希望它与我设置的ListView相匹配,所以使用Android系统属性应该是最好的选择。上面的代码会像下面显示的那样崩溃,所以我认为我无法访问这些属性或者我的做法不正确。

03-13 22:59:38.851: ERROR/AndroidRuntime(3575): Caused by: java.lang.RuntimeException: Binary XML file line #26: You must supply a layout_height attribute.
2个回答

38

这是在Android源代码中的实现方式。

<View android:id="@+id/Separator"
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:background="?android:attr/listDivider" />

3
如何获取Android中所有默认值,例如您在上面的答案中提到的android:attr/listDivider?回答:您可以在Android开发文档中找到有关默认值的信息。要使用特定属性的默认值,可以在XML布局文件中使用该属性,并将其设置为“?attr/属性名称”的形式。例如,要使用android:attr/listDivider的默认值,请在XML布局文件中将分隔线属性设置为“?android:attr/listDivider”。 - Hunt
1
我和 Hunt 一样,有一个问题:你从哪里获取了那个值? - Solenoid
这对于 ListView 是一样的吗? - Gnanam R

0

魔法师知识的来源必须是https://developer.android.com/reference/android/R.attr.html

public static final int listDivider:

列表分隔线的drawable。必须是对另一个资源的引用,格式为“@[+][package:]type:name”,或者是主题属性的形式“?[package:][type:]name”。

所以我只需要在该网站的搜索栏中输入“列表分隔线的drawable”或者只输入“分隔线”即可。


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