如何在 Android 中使用虚线/虚线分隔线创建 ListView?

Posted

技术标签:

【中文标题】如何在 Android 中使用虚线/虚线分隔线创建 ListView?【英文标题】:How do I create a ListView with dashed / dotted line dividers in Android? 【发布时间】:2011-05-06 10:49:33 【问题描述】:

我设法通过在 /app/res/drawable/ em> 文件夹:

<?xml version="1.0" encoding="utf-8"?>
<shape
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="line">
    <stroke
        android:color="#534b4b"
        android:
        android:dashGap="2dp"
        android:dashWidth="1dp"
    />
    <size
        android:
    />
</shape>

现在我对如何将此形状应用到 ListView 感到困惑。我尝试了以下方法,但没有显示分隔符:

<ListView android:id="@+id/android:list" 
    android:layout_ 
    android:layout_
    android:cacheColorHint="#00000000"
    android:divider="@drawable/dash"
    android:dividerHeight="1dp"
/>

什么?

【问题讨论】:

【参考方案1】:

这是我的,它可以工作:

<?xml version="1.0" encoding="utf-8"?>
<shape
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="line">
    <stroke
        android:color="#FF404040"
        android:
        android:dashGap="3dp"
        android:dashWidth="1dp"
    />
    <size
        android:
    />
</shape>

【讨论】:

您可能还需要将 android:layerType="software" 添加到引用该形状的节点。至少在某些设备上,虚线会显示为实线。 作为 layerType 解决实线问题的设备的示例是 Nexus 5 和 4.4.3。 这个版本似乎可以工作,因为 。这在我看来就像 GradientDrawable 中的一个错误:如果高度 - 2 * 笔划宽度 另外,如前所述,您必须为较新的 android 版本使用软件层,因为硬件加速不支持虚线。见code.google.com/p/android/issues/detail?id=29944【参考方案2】:

您还需要android:dividerHeight。形状是可变大小的,现在你有一个零高度分隔线。

【讨论】:

Shoot,我忘了在上面的示例中添加它,但是在测试时,包含了一个 dividerHeight。感谢您指出这一点!【参考方案3】:
    定义 layerType 以显示虚线分隔线,不要忘记提供分隔线高度。

<ListView android:id="@+id/android:list" android:layout_ android:layout_ android:cacheColorHint="#00000000" android:divider="@drawable/dash" android:dividerHeight="1dp" android:layerType="software"/>

【讨论】:

以上是关于如何在 Android 中使用虚线/虚线分隔线创建 ListView?的主要内容,如果未能解决你的问题,请参考以下文章

flex 图表网格线虚线

如何修复仅在 ios 而不是 android 上发生的虚线边框错误?

如何使用shape来画半圆和画虚线

删除 Visual Studio 2017 中的垂直虚线缩进线

android中用于确认代码的虚线输入字段

如何在 Firefox 中删除 SELECT/OPTION 下拉控件上的虚线?