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

标签 android android-recyclerview divider

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

这是一张著名的“聊天”Android 应用的图片。我的问题是如何模拟红色的行为,即不采用父屏幕宽度但开始与 recyclerview 项目膨胀布局中的 TextView 对齐的分隔线?

enter image description here

我创建了一个 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插图的属性,直到感觉正确为止:

enter image description here

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

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

有什么想法吗?

最佳答案

无需使用mRecyclerView.addItemDecoration

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

如果你制作布局的根RelativeLayout,你可以有分隔符toRightOf="@+id/some_other_view",所以它与项目的 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" />

关于Android recyclerview 分隔符与内部布局 View 对齐,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40788950/

相关文章:

android - AdMob 尝试连接到 127.0.0.1 但失败了。始终触发 onFailedToReceiveAd(发生网络错误。)

c# - CommandInvokationFailure : Failed to create a assets. ap_package 详情见控制台

android - 为安卓模拟器安装 `find`程序

android-layout - Material Design 折叠工具栏布局标题截断

html - 将一个向右浮动的元素包裹在另一个元素下面

android - 如何更改 ImageCardView 上信息区域的背景颜色?

android - 如何在 android 中滚动时放大 Recycler View 中心项目?

java - 如何在 BottomSheetDialogFragment 内的 ViewPager2 上启用拖动?

height - Flutter 垂直分隔线与其父级一样高

html - Div 标签内的垂直间距