美文网首页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