在这个答案的一些帮助下,我设法包装了一个非常基本的 ScrollView 组件,您可以在这种情况下使用:
创建一个扩展 ScrollView 的自定义类并进行以下修改:
public class MaxHeightScrollView extends ScrollView {
private int maxHeight;
public MaxHeightScrollView(Context context) {
super(context);
}
public MaxHeightScrollView(Context context, AttributeSet attrs) {
super(context, attrs);
init(context, attrs);
}
public MaxHeightScrollView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
init(context, attrs);
}
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
public MaxHeightScrollView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
init(context, attrs);
}
private void init(Context context, AttributeSet attrs) {
if (attrs != null) {
TypedArray styledAttrs = context.obtainStyledAttributes(attrs, R.styleable.MaxHeightScrollView);
maxHeight = styledAttrs.getDimensionPixelSize(R.styleable.MaxHeightScrollView_maxHeight, 200); //200 is a default value
styledAttrs.recycle();
}
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
heightMeasureSpec = MeasureSpec.makeMeasureSpec(maxHeight, MeasureSpec.AT_MOST);
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}
}
然后剩下的一件小事是在您的 values 文件夹的 attrs.xml 文件中声明您的样式(如果您没有,只需在项目的 res 文件夹的 values 文件夹中创建一个具有此名称的 xml 文件)。在此处添加以下行:
<declare-styleable name="MaxHeightScrollView">
<attr name="maxHeight" format="dimension" />
</declare-styleable>
并使用您的新 ScrollView 如下:
<com.yourpackage.MaxHeightScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:maxHeight="300dp">
</com.yourpackage.MaxHeightScrollView>
学分很快就结束了!