【发布时间】:2021-08-30 07:37:57
【问题描述】:
【问题讨论】:
标签: java android kotlin android-recyclerview
【问题讨论】:
标签: java android kotlin android-recyclerview
我认为滚动条已经在分隔线的前面,它是半透明的,所以您的分隔线可以显示出来。
您可以通过android:scrollbarStyle 属性控制滚动条的定位。
此属性有四个可能的值,insideOverlay、insideInset、outsideOverlay、outsideInset,记录在此:
http://developer.android.com/reference/android/view/View.html#attr_android:scrollbarStyle
解决方案 #1:
使用outsideOverlay 或outsideInset 将滚动条放置在您的内容之外,从而避免重叠。 @ScottStanchfield 的答案在这里提供了有用的信息:android ListView scrollbarStyle。
解决方案 #2:
另一种可能的解决方案是将ItemDecoration 分隔线修改为在边缘附近淡出的渐变,避免与滚动条重叠。
如下定义您的divider.xml:
<inset xmlns:android="https://schemas.android.com/apk/res/android"
android:insetLeft="16dp" android:insetRight="16dp">
<shape android:shape="rectangle">
<gradient android:startColor="#20FF0000" android:centerColor="#FFFF0000" android:endColor="#20FF0000" android:angle="0" />
</shape>
</inset>
修改插图和颜色以满足您的需求。插图将防止与滚动条重叠,渐变允许分隔线向左右边缘淡出。
解决方案 #3:
通过属性android:scrollbarThumbVertical 为滚动条使用自定义drawable,并确保此drawable 不透明。
【讨论】:
recyclerView.scrollBarStyle = View.SCROLLBARS_INSIDE_INSET 对我来说效果还不错。它确实使分隔符有一个右边距(我认为实际的回收器视图本身会得到这个插图/边距),但它可以完成这项工作。另一种选择是使 ItemDecoration 具有正确的填充。