【问题标题】:Android: How to bring recyclerview scrollbar to front over RecyclerView.ItemDecoration?Android:如何将 recyclerview 滚动条放在 RecyclerView.ItemDecoration 的前面?
【发布时间】:2021-08-30 07:37:57
【问题描述】:

如下图所示,我的滚动条显示在项目分隔符 /RecyclerView.ItemDecoration 后面。所以你可以看到滚动条上的分隔符看起来很难看。有没有办法把滚动条放在前面?

【问题讨论】:

    标签: java android kotlin android-recyclerview


    【解决方案1】:

    我认为滚动条已经在分隔线的前面,它是半透明的,所以您的分隔线可以显示出来。

    您可以通过android:scrollbarStyle 属性控制滚动条的定位。

    此属性有四个可能的值,insideOverlayinsideInsetoutsideOverlayoutsideInset,记录在此:

    http://developer.android.com/reference/android/view/View.html#attr_android:scrollbarStyle

    解决方案 #1: 使用outsideOverlayoutsideInset 将滚动条放置在您的内容之外,从而避免重叠。 @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 具有正确的填充。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-04
    • 2011-12-30
    • 1970-01-01
    • 2020-09-25
    • 2015-01-25
    相关资源
    最近更新 更多