NestedScrollView在两个布局之间设置高度到空间

时间:2018-01-04 07:20:56

标签: android android-layout height android-nestedscrollview nestedscrollview

我正在尝试将后退按钮保留在页面底部,并使用嵌套滚动视图填充统计信息相对布局下方的空间和页面底部的后退按钮。它目前适合在顶部的统计数据下,但是从页面底部按下后退按钮,因为它适合页面。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.swapsy.jack.broketoballing.FoodActivity"
    android:orientation="vertical"
    android:id="@+id/linWholePage">

    <RelativeLayout
        android:id="@+id/statsTop"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="14dp"
        android:layout_marginLeft="5dp"
        android:layout_marginRight="5dp"
        android:background="@drawable/textbackground"
        android:layout_alignParentStart="true"
        android:layout_marginBottom="5dp"
        android:paddingBottom="5dp">

        <ImageView
            android:id="@+id/imgFood"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/ic_food"
            android:layout_marginTop="5dp"
            android:layout_marginStart="5dp" android:contentDescription="@string/todo" />

        <TextView
            android:id="@+id/txtFood"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignTop="@+id/imgFood"
            android:layout_marginStart="16dp"
            android:layout_toEndOf="@+id/imgFood"
            android:text="@string/_300_300"
            android:textSize="17sp"
            android:textStyle="bold"
            android:layout_marginTop="5dp"/>

        <ProgressBar
            android:id="@+id/foodBar"
            style="?android:attr/progressBarStyleHorizontal"
            android:layout_width="220dp"
            android:layout_height="wrap_content"
            android:layout_alignTop="@+id/txtFood"
            android:layout_marginStart="11dp"
            android:layout_toEndOf="@+id/txtFood"
            android:layout_marginTop="3dp"
            android:background="@drawable/foodbaroutline"
            android:max="300"
            android:progress="150"
            android:progressDrawable="@drawable/foodprogressdrawable"
            android:padding="2dp"/>

        <ImageView
            android:id="@+id/imgHealth"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignStart="@+id/imgFood"
            android:layout_below="@+id/imgFood"
            android:src="@drawable/ic_health"
            android:layout_marginTop="5dp"
            android:layout_marginBottom="5dp" android:contentDescription="@string/todo" />

        <TextView
            android:id="@+id/txtHealth"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignStart="@+id/txtFood"
            android:layout_alignTop="@+id/imgHealth"
            android:text="@string/_300_300"
            android:textSize="17sp"
            android:textStyle="bold"
            android:layout_marginTop="5dp"/>

        <ProgressBar
            android:id="@+id/healthBar"
            style="?android:attr/progressBarStyleHorizontal"
            android:layout_width="220dp"
            android:layout_height="wrap_content"
            android:layout_alignStart="@+id/foodBar"
            android:layout_alignTop="@+id/txtHealth"
            android:layout_marginTop="3dp"
            android:background="@drawable/healthbaroutline"
            android:max="300"
            android:progress="300"
            android:progressDrawable="@drawable/healthprogressdrawable"
            android:padding="2dp"/>

        <ImageView
            android:id="@+id/imgClock"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignStart="@+id/imgHealth"
            android:layout_below="@+id/imgHealth"
            android:contentDescription="@string/todo"
            android:paddingTop="7dp"
            android:src="@drawable/ic_clock" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignTop="@+id/imgClock"
            android:layout_marginStart="13dp"
            android:layout_toEndOf="@+id/imgClock"
            android:text="@string/timestring"
            android:textStyle="bold"
            android:textSize="17sp"
            android:layout_marginTop="12dp"
            android:id="@+id/txtTime" />

        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignStart="@+id/imgClock"
            android:layout_below="@+id/imgClock"
            android:src="@drawable/ic_money"
            android:layout_marginTop="7dp"
            android:id="@+id/imgMoney" android:contentDescription="@string/todo" />

        <TextView
            android:id="@+id/txtMoney"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignBottom="@+id/imgMoney"
            android:layout_alignStart="@+id/txtTime"
            android:text="@string/_0"
            android:textSize="17sp"
            android:layout_marginBottom="5dp"
            android:textStyle="bold" />

        <ImageView
            android:id="@+id/imgBank"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignStart="@+id/imgMoney"
            android:layout_below="@+id/imgMoney"
            android:layout_marginTop="11dp"
            android:src="@drawable/ic_bank" />

        <TextView
            android:id="@+id/txtBankBal"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignStart="@+id/txtMoney"
            android:layout_alignTop="@+id/imgBank"
            android:text="$0"
            android:textSize="17sp"
            android:textStyle="bold"
            android:layout_marginTop="5dp"/>

    </RelativeLayout>

    <com.google.android.gms.ads.AdView xmlns:ads="http://schemas.android.com/apk/res-auto"
        android:id="@+id/adView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentStart="true"
        android:layout_below="@+id/imgBank"
        android:layout_marginTop="2dp"
        android:layout_marginBottom="3dp"
        ads:adSize="SMART_BANNER"
        ads:adUnitId="ca-app-pub-3940256099942544/5224354917"
        android:visibility="visible"
        />


        <android.support.v4.widget.NestedScrollView
            android:id="@+id/scrFood"
            android:layout_width="match_parent"
            android:layout_height="match_parent">

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="vertical">

                <Button
                    android:id="@+id/btnEatRubbish"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:text="Eat out of a bin                                $0"
                    android:textAllCaps="false"
                    android:textSize="20sp"
                    android:textStyle="normal" />

                <Button
                    android:id="@+id/btnEatBeans"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:text="Eat Beans                                         $2"
                    android:textAllCaps="false"
                    android:textSize="20sp"
                    android:textStyle="normal" />

                <Button
                    android:id="@+id/btnEatSliceOfCake"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:text="Eat Slice of Cake                             $5"
                    android:textAllCaps="false"
                    android:textSize="20sp"
                    android:textStyle="normal" />

                <Button
                    android:id="@+id/btnEatCheeseBurger"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:text="Eat Cheese Burger                        $20"
                    android:textAllCaps="false"
                    android:textSize="20sp"
                    android:textStyle="normal" />

                <Button
                    android:id="@+id/btnEatOrganicMeal"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:text="Eat Organic Meal                           $70"
                    android:textAllCaps="false"
                    android:textSize="20sp"
                    android:textStyle="normal" />

                <Button
                    android:id="@+id/btnEatRestaurant"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:text="Eat at Restaurant                          $140"
                    android:textAllCaps="false"
                    android:textSize="20sp"
                    android:textStyle="normal" />

                <Button
                    android:id="@+id/btnEatUltimateMeal"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:text="Eat an Ultimate Meal                  $200"
                    android:textAllCaps="false"
                    android:textSize="20sp"
                    android:textStyle="normal" />

            </LinearLayout>

        </android.support.v4.widget.NestedScrollView>


    <RelativeLayout
        android:id="@+id/relBack"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_gravity="center|bottom">

        <Button
            android:id="@+id/btnBack"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:layout_centerHorizontal="true"
            android:layout_marginBottom="5dp"
            android:text="@string/back"
            android:textAllCaps="false"
            android:textSize="20sp"
            android:textStyle="normal" />

    </RelativeLayout>


</LinearLayout>

我希望它看起来像这样......

The look I want

2 个答案:

答案 0 :(得分:1)

  • 将nestedScrollView包含在线性布局中,其中参数为

    <LinearLayout android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1">

  • 将后退按钮的父级更改为线性布局而不是相对布局,并将其高度参数更改为wrap_content

代码是这样的:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/linWholePage"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="com.swapsy.jack.broketoballing.FoodActivity">

    <RelativeLayout
        android:id="@+id/statsTop"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentStart="true"
        android:layout_marginBottom="5dp"
        android:layout_marginLeft="5dp"
        android:layout_marginRight="5dp"
        android:layout_marginTop="14dp"
        android:background="@drawable/textbackground"
        android:paddingBottom="5dp">

        <ImageView
            android:id="@+id/imgFood"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginStart="5dp"
            android:layout_marginTop="5dp"
            android:contentDescription="@string/todo"
            android:src="@drawable/ic_food" />

        <TextView
            android:id="@+id/txtFood"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignTop="@+id/imgFood"
            android:layout_marginStart="16dp"
            android:layout_marginTop="5dp"
            android:layout_toEndOf="@+id/imgFood"
            android:text="@string/_300_300"
            android:textSize="17sp"
            android:textStyle="bold" />

        <ProgressBar
            android:id="@+id/foodBar"
            style="?android:attr/progressBarStyleHorizontal"
            android:layout_width="220dp"
            android:layout_height="wrap_content"
            android:layout_alignTop="@+id/txtFood"
            android:layout_marginStart="11dp"
            android:layout_marginTop="3dp"
            android:layout_toEndOf="@+id/txtFood"
            android:background="@drawable/foodbaroutline"
            android:max="300"
            android:padding="2dp"
            android:progress="150"
            android:progressDrawable="@drawable/foodprogressdrawable" />

        <ImageView
            android:id="@+id/imgHealth"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignStart="@+id/imgFood"
            android:layout_below="@+id/imgFood"
            android:layout_marginBottom="5dp"
            android:layout_marginTop="5dp"
            android:contentDescription="@string/todo"
            android:src="@drawable/ic_health" />

        <TextView
            android:id="@+id/txtHealth"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignStart="@+id/txtFood"
            android:layout_alignTop="@+id/imgHealth"
            android:layout_marginTop="5dp"
            android:text="@string/_300_300"
            android:textSize="17sp"
            android:textStyle="bold" />

        <ProgressBar
            android:id="@+id/healthBar"
            style="?android:attr/progressBarStyleHorizontal"
            android:layout_width="220dp"
            android:layout_height="wrap_content"
            android:layout_alignStart="@+id/foodBar"
            android:layout_alignTop="@+id/txtHealth"
            android:layout_marginTop="3dp"
            android:background="@drawable/healthbaroutline"
            android:max="300"
            android:padding="2dp"
            android:progress="300"
            android:progressDrawable="@drawable/healthprogressdrawable" />

        <ImageView
            android:id="@+id/imgClock"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignStart="@+id/imgHealth"
            android:layout_below="@+id/imgHealth"
            android:contentDescription="@string/todo"
            android:paddingTop="7dp"
            android:src="@drawable/ic_clock" />

        <TextView
            android:id="@+id/txtTime"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignTop="@+id/imgClock"
            android:layout_marginStart="13dp"
            android:layout_marginTop="12dp"
            android:layout_toEndOf="@+id/imgClock"
            android:text="@string/timestring"
            android:textSize="17sp"
            android:textStyle="bold" />

        <ImageView
            android:id="@+id/imgMoney"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignStart="@+id/imgClock"
            android:layout_below="@+id/imgClock"
            android:layout_marginTop="7dp"
            android:contentDescription="@string/todo"
            android:src="@drawable/ic_money" />

        <TextView
            android:id="@+id/txtMoney"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignBottom="@+id/imgMoney"
            android:layout_alignStart="@+id/txtTime"
            android:layout_marginBottom="5dp"
            android:text="@string/_0"
            android:textSize="17sp"
            android:textStyle="bold" />

        <ImageView
            android:id="@+id/imgBank"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignStart="@+id/imgMoney"
            android:layout_below="@+id/imgMoney"
            android:layout_marginTop="11dp"
            android:src="@drawable/ic_bank" />

        <TextView
            android:id="@+id/txtBankBal"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignStart="@+id/txtMoney"
            android:layout_alignTop="@+id/imgBank"
            android:layout_marginTop="5dp"
            android:text="$0"
            android:textSize="17sp"
            android:textStyle="bold" />

    </RelativeLayout>

    <com.google.android.gms.ads.AdView xmlns:ads="http://schemas.android.com/apk/res-auto"
        android:id="@+id/adView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentStart="true"

        android:layout_marginBottom="3dp"
        android:layout_marginTop="2dp"
        android:visibility="visible"
        ads:adSize="SMART_BANNER"
        ads:adUnitId="ca-app-pub-3940256099942544/5224354917" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1">

        <android.support.v4.widget.NestedScrollView
            android:id="@+id/scrFood"
            android:layout_width="match_parent"
            android:layout_height="match_parent">

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="vertical">

                <Button
                    android:id="@+id/btnEatRubbish"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:text="Eat out of a bin                                $0"
                    android:textAllCaps="false"
                    android:textSize="20sp"
                    android:textStyle="normal" />

                <Button
                    android:id="@+id/btnEatBeans"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:text="Eat Beans                                         $2"
                    android:textAllCaps="false"
                    android:textSize="20sp"
                    android:textStyle="normal" />

                <Button
                    android:id="@+id/btnEatSliceOfCake"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:text="Eat Slice of Cake                             $5"
                    android:textAllCaps="false"
                    android:textSize="20sp"
                    android:textStyle="normal" />

                <Button
                    android:id="@+id/btnEatCheeseBurger"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:text="Eat Cheese Burger                        $20"
                    android:textAllCaps="false"
                    android:textSize="20sp"
                    android:textStyle="normal" />

                <Button
                    android:id="@+id/btnEatOrganicMeal"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:text="Eat Organic Meal                           $70"
                    android:textAllCaps="false"
                    android:textSize="20sp"
                    android:textStyle="normal" />

                <Button
                    android:id="@+id/btnEatRestaurant"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:text="Eat at Restaurant                          $140"
                    android:textAllCaps="false"
                    android:textSize="20sp"
                    android:textStyle="normal" />

                <Button
                    android:id="@+id/btnEatUltimateMeal"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:text="Eat an Ultimate Meal                  $200"
                    android:textAllCaps="false"
                    android:textSize="20sp"
                    android:textStyle="normal" />

            </LinearLayout>

        </android.support.v4.widget.NestedScrollView>
    </LinearLayout>


    <LinearLayout
        android:id="@+id/relBack"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center|bottom">

        <Button
            android:id="@+id/btnBack"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"

            android:layout_marginBottom="5dp"
            android:text="@string/back"
            android:textAllCaps="false"
            android:textSize="20sp"
            android:textStyle="normal" />

    </LinearLayout>
</LinearLayout>

答案 1 :(得分:0)

永远记住XML代码是从TOP到Bottom解析的,你的相对布局没有被正确渲染,因为你把它放在最后,所以只需将它放在嵌套滚动视图上方并在嵌套滚动视图中设置layout_above @ backbtn布局的ID,如果您需要代码,请告诉我,但我建议您自己尝试:)