Android Material ListView 分隔线

hpi*_*hal 5 android listview material-design

我正在尝试构建一个遵循谷歌指南的列表视图。

这是我的要求:

  1. 允许组标题
  2. 允许组之间使用全宽分隔线
  3. 允许项目之间有部分分隔线

这是显示标题和项目之间的分隔线的图像。不幸的是,无法查看组之间的全宽分隔线,但这就像普通的分隔线一样。

材质列表视图

我可以构建一个自定义适配器,它接收Item、 、HeaderItem和的子类ContactItem

header.xml简单地说就是

<TextView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:gravity="center_vertical"
    android:minHeight="48dp"
    android:padding="16dp"
    android:text="Today"
    android:textColor="#8A000000"
    android:textSize="14sp" />
Run Code Online (Sandbox Code Playgroud)

至于contact.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

        <ImageView
            android:id="@+id/friend_profile_picture"
            android:layout_width="40dp"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_centerVertical="true"
            android:layout_margin="16dp"
            android:scaleType="fitStart"
            android:src="@drawable/ic_home" />

            <TextView
                android:id="@+id/friend_name"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignWithParentIfMissing="true"
                android:layout_toRightOf="@+id/friend_profile_picture"
                android:paddingTop="16dp"
                android:text="random_text"
                android:textAppearance="@style/TextAppearance.AppCompat.Body2" />

            <TextView
                android:id="@+id/friend_state"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_below="@+id/friend_name"
                android:layout_toRightOf="@+id/friend_profile_picture"
                android:paddingBottom="16dp"
                android:text="random_text"
                android:textAppearance="@style/TextAppearance.AppCompat.Body1"
                android:textSize="14sp" />

</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)

现在,我的问题是项目分隔符。全宽分隔符将是普通的列表视图分隔符。我只是不确定如何进行部分分隔并使其与普通分隔器一起工作。有什么提示吗?

如果更容易/更好的话,也可以使用RecyclerView和s 来完成。ItemDecorator

小智 0

将视图添加到您的RelativeLayout中我在将视图添加到您的布局文件后发布代码

      <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content">

    <ImageView
        android:id="@+id/friend_profile_picture"
        android:layout_width="40dp"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_centerVertical="true"
        android:layout_margin="16dp"
        android:scaleType="fitStart"
        android:src="@drawable/ic_home" />

        <TextView
            android:id="@+id/friend_name"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignWithParentIfMissing="true"
            android:layout_toRightOf="@+id/friend_profile_picture"
            android:paddingTop="16dp"
            android:text="random_text"
            android:textAppearance="@style/TextAppearance.AppCompat.Body2" />

        <TextView
            android:id="@+id/friend_state"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@+id/friend_name"
            android:layout_toRightOf="@+id/friend_profile_picture"
            android:paddingBottom="16dp"
            android:text="random_text"
            android:textAppearance="@style/TextAppearance.AppCompat.Body1"
            android:textSize="14sp" />
     <View
    android:id="@+id/divider_line"
    android:layout_width="match_parent"
    android:layout_below="@+id/friend_state"
    android:layout_marginBottom="1dp"
    android:layout_height="1dp"
    android:background="@color/divider_line_color"
    xmlns:android="http://schemas.android.com/apk/res/android" />
    </RelativeLayout>
Run Code Online (Sandbox Code Playgroud)

将divider_line_color 定义到values 文件夹中的colors.xml 中。

即使您的列表视图设置 android:divider="@null"