一个可以设置最大高度的RecyclerView

2020-10-19  本文已影响0人  Dale_Dawson

RecyclerView是没有maxHeight属性配置的,今天遇到一个需求就需要设置RecyclerView的最大高度,我们可以通过继承RecyclerView自定义实现此属性功能。

一、自定义RecyclerView

public class MaxHeightRecyclerView extends RecyclerView {
    private int maxHeight;

    public MaxHeightRecyclerView(Context context) {
        super(context);
    }

    public MaxHeightRecyclerView(Context context, AttributeSet attrs) {
        super(context, attrs);
        init(context, attrs);
    }

    public MaxHeightRecyclerView(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        init(context, attrs);
    }

    private void init(Context context, AttributeSet attrs) {
        TypedArray arr = context.obtainStyledAttributes(attrs, R.styleable.MaxHeightRecyclerView);
        maxHeight = arr.getLayoutDimension(R.styleable.MaxHeightRecyclerView_maxHeight, maxHeight);
        arr.recycle();
    }

    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        if (maxHeight > 0) {
            heightMeasureSpec = MeasureSpec.makeMeasureSpec(maxHeight, MeasureSpec.AT_MOST);
        }
        super.onMeasure(widthMeasureSpec, heightMeasureSpec);
    }
}

二、定义style在style.xml中添加如下代码

<declare-styleable name="MaxHeightRecyclerView">
        <attr name="maxHeight" format="dimension" />
</declare-styleable>

三、具体使用

<MaxHeightRecyclerView
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       app:maxHeight="250dp"/>

这样,一个可以设置最大高度的RecyclerView就可以使用了。

上一篇下一篇

猜你喜欢

热点阅读