美文网首页
RecyclerView实现设置最大高度maxHeight

RecyclerView实现设置最大高度maxHeight

作者: Amy_LuLu__ | 来源:发表于2019-05-24 11:22 被阅读0次

    原文:
    RecyclerView实现设置最大高度maxHeight
    https://blog.csdn.net/z226688/article/details/83722638

    RecyclerView是没有maxHeight属性配置的,但我们可以通过继承RecyclerView自定义实现此属性功能。

    具体实现如下:

    public class MaxHeightRecyclerView extends RecyclerView {
        private int mMaxHeight;
    
        public MaxHeightRecyclerView(Context context) {
            super(context);
        }
    
        public MaxHeightRecyclerView(Context context, AttributeSet attrs) {
            super(context, attrs);
            initialize(context, attrs);
        }
    
        public MaxHeightRecyclerView(Context context, AttributeSet attrs, int defStyleAttr) {
            super(context, attrs, defStyleAttr);
            initialize(context, attrs);
        }
    
        private void initialize(Context context, AttributeSet attrs) {
            TypedArray arr = context.obtainStyledAttributes(attrs, R.styleable.MaxHeightRecyclerView);
            mMaxHeight = arr.getLayoutDimension(R.styleable.MaxHeightRecyclerView_maxHeight, mMaxHeight);
            arr.recycle();
        }
    
        @Override
        protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
            if (mMaxHeight > 0) {
                heightMeasureSpec = MeasureSpec.makeMeasureSpec(mMaxHeight, MeasureSpec.AT_MOST);
            }
            super.onMeasure(widthMeasureSpec, heightMeasureSpec);
        }
    }
    

    在style.xml文件中加入:

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

    然后就可以在xml中使用了:

    app:maxHeight="400dp"
    

    相关文章

      网友评论

          本文标题:RecyclerView实现设置最大高度maxHeight

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