recyclerView本没有maxHeight属性,重写自己添加没什么好说的
public class MaxHeightRecyclerView extends RecyclerView {
private int mHeightMax;
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.maxHeight_RecyclerView);
mHeightMax = arr.getLayoutDimension(R.styleable.maxHeight_RecyclerView_maxHeight, mHeightMax);
arr.recycle();
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
if (mHeightMax > 0) {
heightMeasureSpec = MeasureSpec.makeMeasureSpec(mHeightMax, MeasureSpec.AT_MOST);
}
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}
}
自定义属性
<declare-styleable name="maxHeight_RecyclerView">
<attr name="maxHeight" format="dimension" />
</declare-styleable>
布局中直接使用即可