中间需要一个页眉,页脚和ScrollView。当前代码不起作用

时间:2017-11-18 16:37:54

标签: android header scrollview footer

我一直在这里搜索,其他网站在最后一小时试图弄清楚我做错了什么。正如标题所示,我需要带有按钮的标题,滚动视图,然后是带按钮的页脚。我希望页眉和页脚始终可见。找到的所有内容都表示要创建一个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。我知道我的一些代码现在有点草率,主要是因为试图弄清楚这个问题。

1 个答案:

答案 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>属性。将权重分配给单个视图将使其占用所有剩余空间,在其他视图获取所需内容之后。因此,您的按钮可以获得所需的空间,滚动视图可以获得其余部分。由于它位于中间,因此必须将底部按钮向下推到屏幕的末尾。