美文网首页Android-recyclerview
修改RecyclerView滚动条颜色、常驻显示

修改RecyclerView滚动条颜色、常驻显示

作者: 苍蝇的梦 | 来源:发表于2021-02-27 10:41 被阅读0次

    2021-02-23 遇到的一点小问题

    .

    修改RecyclerView滚动条颜色和滚动条的背景颜色,可以用color颜色,也可以用drawable图片:

    <!--这个是滚动条的颜色-->
    android:scrollbarThumbVertical="@drawable/wannoo_151515"
    <!--这个是滚动条的背景色-->
    android:scrollbarTrackVertical="#FF0000"
    

    因为设计的让滚动条不是直角,所以用的shape绘制的drawable:

    <!--这个是res/drawable文件夹的wannoo_151515文件-->
    <?xml version="1.0" encoding="utf-8"?>
    <shape xmlns:android="http://schemas.android.com/apk/res/android"
        android:shape="rectangle">
        <solid android:color="@color/wannoo" />
        <corners android:radius="72dp" />
    </shape>
    
    wannoo https://segmentfault.com/a/1190000012800450
    .

    这个是设置滚动条常驻,当内容多时,滚动条会一直显示着:

    recycler.setScrollbarFadingEnabled(false);
    recycler.setScrollBarFadeDuration(0);
    

    注意:xml里不要写android:overScrollMode="never",会无法生效。
    如果不用java设置,也可以直接在xml里写

    android:fadeScrollbars="false"
    android:scrollbarFadeDuration="0"
    
    .

    这次是在PopupWindow上显示RecyclerView,底部还固定有一个按钮,为了效果有限制最大的高度。
    如果内容多,按钮固定底部,RecyclerView内容滑动,如果内容少,RecyclerView只展示当前内容高度,底部按钮接后面。
    网上找了下,RecyclerView实现设置最大高度maxHeight,能直接使用。
    不过太懒了,而且就一个地方用,不想自定义参数,直接写固定的。

    package com.thunder_data.orbiter.vit.view;
    
    import android.content.Context;
    import android.util.AttributeSet;
    
    import androidx.annotation.NonNull;
    import androidx.annotation.Nullable;
    import androidx.recyclerview.widget.RecyclerView;
    
    import com.thunder_data.orbiter.vit.tools.ToolSize;
    
    class MaxHeightRecyclerView extends RecyclerView {
        private final int mMaxHeight = ToolSize.getSize(150);//固定的150dp
    
        public MaxHeightRecyclerView(@NonNull Context context) {
            super(context);
        }
    
        public MaxHeightRecyclerView(@NonNull Context context, @Nullable AttributeSet attrs) {
            super(context, attrs);
        }
    
        public MaxHeightRecyclerView(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
            super(context, attrs, defStyleAttr);
        }
    
        @Override
        protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
            if (mMaxHeight > 0) {
                heightMeasureSpec = MeasureSpec.makeMeasureSpec(mMaxHeight, MeasureSpec.AT_MOST);
            }
            super.onMeasure(widthMeasureSpec, heightMeasureSpec);
        }
    }
    
    

    相关文章

      网友评论

        本文标题:修改RecyclerView滚动条颜色、常驻显示

        本文链接:https://www.haomeiwen.com/subject/ehqrfltx.html