Android recyclerview 分隔符与内部布局视图对齐

Android recyclerview divider aligned to internal layout views

我知道这必须有一个简单的答案,所以这里是:

这是一张著名的 "chat" Android 应用程序的图片。我的问题是如何模拟红色的行为,即不采用父级屏幕宽度但开始与 recyclerview 项目膨胀布局中的文本视图对齐的分隔线?

我创建了一个 chatlist_divider.xml 可绘制对象,如下所示:

<?xml version="1.0" encoding="utf-8"?>
<inset xmlns:android="http://schemas.android.com/apk/res/android"
       android:insetLeft="80dp"
       android:insetRight="16dp">
    <shape>
        <size android:height="1dp"/>
        <padding
            android:bottom="2dp"
            android:left="8dp"
            android:right="8dp"
            android:top="2dp"/>
        <solid android:color="@color/colorDivider"/>
        <corners android:radius="48dp" />
    </shape>
</inset>

并以编程方式使用它如下:

mRecyclerView.addItemDecoration(new DividerItemDecoration(getActivity(), R.drawable.chatlist_divider));

但是结果不会像上图那么完美,因为我在玩插图的insetLeft 属性,直到感觉合适:

这是可以做到的最好的吗?我想要在每个列表项的膨胀布局内正确和明确地对齐 TextView,而不仅仅是反复试验。

(我也可以在文本视图(位于其自己的布局中)下方创建一个 <View> 来模拟分隔线,但是我如何为其分配 .xml 可绘制对象? )

有什么想法吗?

无需使用mRecyclerView.addItemDecoration

只需将分隔线创建为常规视图,将可绘制对象 xml 作为背景并将其添加到项目的布局中 xml。

如果您制作布局的根部 RelativeLayout,您可以使用分隔线 toRightOf="@+id/some_other_view",因此它与项目的视图正确对齐。

<View
    android:id="@+id/divider"
    android:layout_width="match_parent"
    android:layout_height="3dp"
    android:layout_toRightOf="@+id/my_photo_view"
    android:background="@drawable/chatlist_divider" />