我正在努力进行布局管理,所以我决定在这里问一下。 我希望以某种方式使用3种布局。 我有3个视图垂直分派到RelativeLayout(我们称之为VTop,VMiddle和VBottom)。
VBottom是一个Button,我希望他与屏幕底部保持对齐,不要移动或调整大小(实际工作)。
VMiddle是一个滚动视图。我希望这个ScrollView能够在底部按钮(VBottom)和最顶层布局(VTop)之间占据所有可能的位置,但绝不会让它的高度低于特定大小。
我希望VTop(包含一些TextViews和其他东西的线性布局)包装其所有内容,只要VMiddle不会小于其最小尺寸。
实际上我的代码几乎可以工作,但是当我向VMiddle中填充太多内容时,它会继续向屏幕顶部增长,而VTop完全消失。如果VTop没有足够的空间来包装他的内容,我希望VMiddle保持最小尺寸。
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/relativeLayout1">
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/linearLayout1" <!-- VTop -->
android:layout_above="@+id/eventDetail_RateLayout"
android:layout_alignParentTop="true"
android:layout_margin="10sp"> <!-- LOT OF VIEWS, NEED TO BE WRAPPED AS MUCH AS POSSIBLE -->
</LinearLayout>
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="100px"
android:id="@+id/eventDetail_RateLayout" <!-- Not visible for now, you can ignore it -->
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp"
android:minWidth="25px"
android:minHeight="25px"
android:background="@color/common_google_signin_btn_text_light_default"
android:layout_above="@+id/eventDetail_CommentScrollView"
android:visibility="gone" />
<ScrollView
android:id="@+id/eventDetail_CommentScrollView" <!-- VMiddle -->
android:background="#4D4A58"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_above="@+id/eventDetail_commentButton">
<LinearLayout
android:orientation="vertical"
android:minWidth="25px"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/eventDetail_CommentLayout" />
</ScrollView>
<Button
android:text="commenter"
android:id="@+id/eventDetail_commentButton" <!-- VMiddle, this one is doing ok -->
android:background="#666"
android:textColor="#f8f8f8"
android:layout_width="match_parent"
android:layout_height="30sp"
android:layout_alignParentBottom="true" />
</RelativeLayout>
感谢您的回答。
答案 0 :(得分:0)
请为knitr
-
ScrollView
答案 1 :(得分:0)
使用此功能,但是使用线性布局并使用weight和weightSum属性可以轻松实现所需的UI类型..还可以相应地重命名布局和视图的ID
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:id="@+id/topLayout"
android:layout_width="match_parent"
android:layout_height="100dp"
android:layout_alignParentTop="true"
android:background="#70AD47"
android:orientation="vertical">
</LinearLayout>
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_above="@+id/btnBottom"
android:layout_below="@+id/topLayout"
android:background="#ED7D31"
android:minHeight="400dp">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical">
</LinearLayout>
</ScrollView>
<Button
android:id="@+id/btnBottom"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:background="#4472C4"
android:text="Bottom button" />
</RelativeLayout>
答案 2 :(得分:0)
1。将属性android:layout_below="@id/linearLayout1"
和android:layout_above="@id/eventDetail_commentButton"
添加到ScrollView
以使其保持在中间位置。
2. 尽管没有必要,但使用ScrollView
及其子LinearLayout
身高android:layout_width="match_parent"
。
无论top
和bottom
布局有多大,中间scrollview
将始终填充中间的自由空间。它绝不会更改height
和top
布局的bottom
。
以下是工作布局:
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/relativeLayout1">
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/linearLayout1"
android:layout_alignParentTop="true"
android:layout_margin="10sp">
</LinearLayout>
<Button
android:text="commenter"
android:id="@+id/eventDetail_commentButton"
android:background="#666"
android:textColor="#f8f8f8"
android:layout_width="match_parent"
android:layout_height="30sp"
android:layout_alignParentBottom="true" />
<ScrollView
android:id="@+id/eventDetail_CommentScrollView"
android:background="#4D4A58"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@id/linearLayout1"
android:layout_above="@id/eventDetail_commentButton">
<LinearLayout
android:orientation="vertical"
android:minWidth="25px"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/eventDetail_CommentLayout" />
</ScrollView>
</RelativeLayout>
希望这会有所帮助〜
答案 3 :(得分:0)
使用android:layout_below =&#34; @ + id / linearlayout1&#34; 在eventDetail_RateLayout
中答案 4 :(得分:0)
我非常确定这些答案都没有达到您所寻找的目标。你想做的事情并不简单,因为它涉及循环依赖:你基本上希望你的vTop
视图包裹并填充vMiddle
视图(android:layout_above="@id/vMiddle"
)留下的任何空间您希望vMiddle
视图换行并填充vTop
视图(android:layout_below="@id/vTop"
)留下的任何空格的时间。
我能想象的唯一解决方案是以编程方式检查和设置视图大小,我不认为这只能通过重新排列布局来实现。
答案 5 :(得分:0)
我终于实现了接近我想要的东西。我将layout_above和below结合起来,通过使Huge TextView可滚动来修复VTop的大小。我现在有一个固定大小的VTop和VBottom,而VMiddle占据了中心的其余部分。
感谢您的快速回答:)