package com.test.widget;
import android.content.Context;
import android.util.AttributeSet;
import android.widget.ScrollView;
import com.qmuiteam.qmui.util.QMUIDisplayHelper;
public class MaxHeightScrollView extends ScrollView {
private Context mContext;
public MaxHeightScrollView(Context context) {
super(context);
init(context);
}
public MaxHeightScrollView(Context context, AttributeSet attrs) {
super(context, attrs);
init(context);
}
public MaxHeightScrollView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
init(context);
}
private void init(Context context) {
mContext = context;
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
try {
//最大高度显示为屏幕内容高度的一半
//此处是关键,设置控件高度不能超过屏幕高度一半(d.heightPixels / 2)(在此替换成自己需要的高度)
heightMeasureSpec = MeasureSpec.makeMeasureSpec(QMUIDisplayHelper.getScreenHeight(getContext()) / 2, MeasureSpec.AT_MOST);
} catch (Exception e) {
e.printStackTrace();
}
//重新计算控件高、宽
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}
}
注:在代码中用到的获取屏幕高度为qmui的工具类,获取屏幕高度可以用其他系统方式获取,这里这个方法不做解释。