如何在android中设置包装内容的最大高度?

android中,你如何创build一个具有最大高度的滚动视图,并包装内容,基本上是垂直包装的内容,但有一个最大的高度?

我试过了

<ScrollView android:id="@+id/scrollView1" android:layout_width="match_parent" android:layout_height="wrap_content" android:maxHeight="200dp" android:layout_alignParentBottom="true" > <LinearLayout android:id="@+id/maincontainer" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical"> </LinearLayout> </ScrollView> 

但是这不起作用?

Solutions Collecting From Web of "如何在android中设置包装内容的最大高度?"

你可以把它添加到任何视图(覆盖从视图inheritance的类中的onMeasure)

 @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { if (maxHeight > 0){ int hSize = MeasureSpec.getSize(heightMeasureSpec); int hMode = MeasureSpec.getMode(heightMeasureSpec); switch (hMode){ case MeasureSpec.AT_MOST: heightMeasureSpec = MeasureSpec.makeMeasureSpec(Math.min(hSize, maxHeight), MeasureSpec.AT_MOST); break; case MeasureSpec.UNSPECIFIED: heightMeasureSpec = MeasureSpec.makeMeasureSpec(maxHeight, MeasureSpec.AT_MOST); break; case MeasureSpec.EXACTLY: heightMeasureSpec = MeasureSpec.makeMeasureSpec(Math.min(hSize, maxHeight), MeasureSpec.EXACTLY); break; } } super.onMeasure(widthMeasureSpec, heightMeasureSpec); } 

我扩展了ScrollView并添加了代码来实现这个function:

https://gist.github.com/JMPergar/439aaa3249fa184c7c0c

我希望是有用的。

你可以通过编程来完成。

  private static class OnViewGlobalLayoutListener implements ViewTreeObserver.OnGlobalLayoutListener { private final static int maxHeight = 130; private View view; public OnViewGlobalLayoutListener(View view) { this.view = view; } @Override public void onGlobalLayout() { if (view.getHeight() > maxHeight) view.getLayoutParams().height = maxHeight; } } 

并将侦听器添加到视图中:

 view.getViewTreeObserver() .addOnGlobalLayoutListener(new OnViewGlobalLayoutListener(view)); 

当视图高度将被改变时,监听器将调用方法onGlobalLayout()。

为了设置滚动视图的高度,你必须一起使用2个linerlayout在一起,然后设置scrool视图为他们的孩子然后设置中间linerlayout布局:高度限制scrollview高度。

在这里你可以像这样设置你的Scrollview的高度:

 <ScrollView android:id="@+id/scrollView1" android:layout_width="match_parent" android:layout_height="200dp" android:layout_alignParentBottom="true" > <LinearLayout android:id="@+id/maincontainer" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical"> </LinearLayout> </ScrollView>