美文网首页
一个可以设置最大高度的RecyclerView

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

作者: Dale_Dawson | 来源:发表于2020-10-19 10:53 被阅读0次

    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就可以使用了。

    相关文章

      网友评论

          本文标题:一个可以设置最大高度的RecyclerView

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