我一直在这里搜索,其他网站在最后一小时试图弄清楚我做错了什么。正如标题所示,我需要带有按钮的标题,滚动视图,然后是带按钮的页脚。我希望页眉和页脚始终可见。找到的所有内容都表示要创建一个relativelayout,将其与父顶部对齐,创建一个页脚,将其与父底部对齐,然后创建一个滚动视图,将其设置在页脚上方和标题下方。出于某种原因,我的代码只是决定忽略它。
<RelativeLayout
android:id="@+id/topBar_id"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:background="@color/colorBackground">
<Button
android:id="@+id/charInfoBtn_id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="General"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="parent"/>
</RelativeLayout>
<ScrollView
android:id="@+id/genLayoutScroll_id"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_above="@id/bottomBar_id"
android:layout_below="@id/topBar_id>
<LinearLayout
//bunch of junk that users scroll through
</LinearLayout>
</ScrollView>
<RelativeLayout
android:id="@+id/bottomBar_id"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
android:background="@color/colorBackground">
<Button
android:id="@+id/genApplyBtn_id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Apply"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" />
</RelativeLayout>
使用此作为我当前的代码,滚动视图位于顶部栏和底部栏的顶部。
如果我删除layout_above和layout_below行,并将其替换为 app:layout_constraintBottom_toTopOf =“@ id / bottomBar_id”然后滚动视图不再越过我的底栏,但现在顶部栏和滚动视图的顶部缺失。
然后我将app:layout_constraintTop_toBottomOf =“@ id / topBar_id”添加到scrollview,它返回到与layout_below和layout_above相同的位置。
我确定我在这里遗漏了一些东西,我无法弄清楚我错过了什么。希望有人可以指出我正在犯的愚蠢错误。
P.S。我知道我的一些代码现在有点草率,主要是因为试图弄清楚这个问题。
答案 0 :(得分:2)
到目前为止,最简单的方法是使用垂直LinearLayout
作为视图的根,并使用&#34;布局权重&#34;的概念。使中间元素(ScrollView
)填满屏幕。
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<Button
android:id="@+id/charInfoBtn_id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="General"/>
<ScrollView
android:id="@+id/genLayoutScroll_id"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1">
<!-- your contents here -->
</ScrollView>
<Button
android:id="@+id/genApplyBtn_id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Apply"/>
</LinearLayout>
如果每个栏中需要多个按钮,则可以将它们包裹在水平LinearLayout
。
这可行的原因是android:layout_weight="1"
标记上的<ScrollView>
属性。将权重分配给单个视图将使其占用所有剩余空间,在其他视图获取所需内容之后。因此,您的按钮可以获得所需的空间,滚动视图可以获得其余部分。由于它位于中间,因此必须将底部按钮向下推到屏幕的末尾。