Android 安卓布局:如何停止;包装“U内容”;从超过另一个布局的高度增长?

Android 安卓布局:如何停止;包装“U内容”;从超过另一个布局的高度增长?,android,layout,Android,Layout,我尝试了多种布局属性的组合,但我无法让它像我希望的那样工作 这是我的布局: <RelativeLayout android:id="@+id/signature_cntSummary" android:layout_below="@+id/signature_cntHeader" android:layout_width="match_parent" tools:layout_height="100dp" android:layout_height=

我尝试了多种布局属性的组合,但我无法让它像我希望的那样工作

这是我的布局:

<RelativeLayout
    android:id="@+id/signature_cntSummary"
    android:layout_below="@+id/signature_cntHeader"
    android:layout_width="match_parent"
    tools:layout_height="100dp"
    android:layout_height="wrap_content">
</RelativeLayout>

<RelativeLayout
    android:id="@+id/signature_cntInput"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:minHeight="200dp">
</RelativeLayout>

现在我想实现的是,“signature\u cntInput”的高度至少应该是200dp,但如果可能的话,应该填满“signature\u cntSummary”版面可能留下的空闲屏幕空间,前提是上面版面的内容没有占用所有空间。 如果第一个版面的内容太多,则不应将第二个版面推出屏幕,而是可以滚动,以便底部版面的高度可以达到200dp

也许这些图片能让事情变得更清楚:

我该怎么做?有可能吗?我的想法快用完了

安德烈

上面的布局示例可能会对您有所帮助。


上面的布局示例可能会对您有所帮助。

谢谢!但不完全是我想要达到的。。。所以我编辑了我的问题,希望能澄清这一点。底部布局应保持在屏幕上的位置。如果上部版面中的内容较少,则仅扩展至顶部;如果上部版面中的内容较多/过多,则高度缩小至最低200dp。那上面的布局就可以滚动了。很抱歉,我不明白你的意思。现在我想你想要的可能不是纯xml代码。我建议你重写onMeasure来控制上面布局的高度,确保屏幕的下部布局至少有200dp的空间。你是对的,我基本上按照你的建议做了:
@Override-protected-void-on-measure(int-widthmasurespec,int-heightMeasureSpec){int-height=MeasureSpec.getSize(heightMeasureSpec);int-mode=MeasureSpec.getMode(heightMeasureSpec);int newHeight=Math.max(height-height/2,height/2);super.onMeasure(widthMeasureSpec,MeasureSpec.makeMeasureSpec(newHeight,mode));}
谢谢!但不完全是我想要达到的。。。所以我编辑了我的问题,希望能澄清这一点。底部布局应保持在屏幕上的位置。如果上部版面中的内容较少,则仅扩展至顶部;如果上部版面中的内容较多/过多,则高度缩小至最低200dp。那上面的布局就可以滚动了。很抱歉,我不明白你的意思。现在我想你想要的可能不是纯xml代码。我建议你重写onMeasure来控制上面布局的高度,确保屏幕的下部布局至少有200dp的空间。你是对的,我基本上按照你的建议做了:
@Override-protected-void-on-measure(int-widthmasurespec,int-heightMeasureSpec){int-height=MeasureSpec.getSize(heightMeasureSpec);int-mode=MeasureSpec.getMode(heightMeasureSpec);int newHeight=Math.max(height-height/2,height/2);super.onMeasure(widthmasurespec,MeasureSpec.makeMeasureSpec(newHeight,mode));}