簡體   English   中英

當上面的 rest 被可滾動布局占用時,如何讓按鈕卡在底部?

[英]How to keep Buttons stuck at bottom while the rest above are occupied by scrollable layout?

我有這個 RelativeLayout

在此處輸入圖像描述

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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"
    android:orientation="vertical"
    tools:context=".ui.StoreVisitActivity">

    <ScrollView
        android:id="@+id/scrollable"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <androidx.appcompat.widget.LinearLayoutCompat
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_marginLeft="@dimen/_8sdp"
            android:layout_marginRight="@dimen/_8sdp"
            android:orientation="vertical">

            <androidx.appcompat.widget.LinearLayoutCompat
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginTop="@dimen/_4sdp"
                android:orientation="horizontal">

                <androidx.appcompat.widget.LinearLayoutCompat
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_weight="1"
                    android:orientation="horizontal">

                    <ImageView
                        android:layout_width="@dimen/_55sdp"
                        android:layout_height="@dimen/_55sdp"
                        android:src="@drawable/person" />

                    <androidx.appcompat.widget.LinearLayoutCompat
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:layout_gravity="center"
                        android:orientation="vertical">

                        <TextView
                            android:id="@+id/txtName"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:layout_marginLeft="@dimen/_4sdp"
                            android:text="Paul Phoenix"
                            android:textColor="@color/main_blue"
                            android:textSize="@dimen/_14sdp"
                            android:textStyle="bold" />

                        <TextView
                            android:id="@+id/txtCode"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:layout_marginLeft="@dimen/_4sdp"
                            android:text="PX2350"
                            android:textColor="@color/main_blue"
                            android:textSize="@dimen/_10sdp"
                            android:textStyle="bold" />

                    </androidx.appcompat.widget.LinearLayoutCompat>

                </androidx.appcompat.widget.LinearLayoutCompat>


                <ImageView
                    android:layout_width="@dimen/_60sdp"
                    android:layout_height="@dimen/_30sdp"
                    android:layout_gravity="center"
                    android:src="@drawable/company_logo" />

            </androidx.appcompat.widget.LinearLayoutCompat>

            <androidx.appcompat.widget.LinearLayoutCompat
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginTop="@dimen/_8sdp"
                android:layout_marginBottom="@dimen/_2sdp"
                android:background="@drawable/bg_border_radius"
                android:orientation="vertical"
                android:padding="@dimen/_16sdp">

                <LinearLayout
                    android:layout_width="match_parent"
                    android:layout_height="@dimen/_20sdp"
                    android:layout_marginTop="@dimen/_4sdp"
                    android:background="@color/main_blue"
                    android:orientation="horizontal">

                    <TextView
                        android:layout_width="0dp"
                        android:layout_height="match_parent"
                        android:layout_weight="0.75"
                        android:gravity="center"
                        android:maxLines="1"
                        android:text="Day, Date"
                        android:textAllCaps="true"
                        android:textColor="@color/white"
                        android:textSize="@dimen/_7sdp" />

                </LinearLayout>

                <LinearLayout
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="@dimen/_4sdp"
                    android:background="@color/black_5"
                    android:orientation="horizontal"
                    android:padding="@dimen/_8sdp">

                    <TextView
                        android:id="@+id/txtTanggal"
                        android:layout_width="0dp"
                        android:layout_height="match_parent"
                        android:layout_weight="0.75"
                        android:gravity="center"
                        android:maxLines="1"
                        android:text="0"
                        android:textAllCaps="true"
                        android:textSize="@dimen/_7sdp" />

                </LinearLayout>


            </androidx.appcompat.widget.LinearLayoutCompat>

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

                <com.google.android.material.textfield.TextInputEditText
                    android:id="@+id/input_search"
                    android:layout_width="match_parent"
                    android:layout_height="@dimen/_25sdp"
                    android:layout_gravity="center"
                    android:layout_weight="1"
                    android:background="@drawable/rectangle_input"
                    android:hint="Search Name Outlet"
                    android:inputType="text"
                    android:paddingHorizontal="@dimen/_10sdp"
                    android:textSize="@dimen/_7sdp" />

                <androidx.cardview.widget.CardView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center"
                    app:cardBackgroundColor="@color/blue_1"
                    app:cardCornerRadius="@dimen/_8sdp"
                    app:cardUseCompatPadding="true">

                    <androidx.appcompat.widget.LinearLayoutCompat
                        android:id="@+id/btnSearch"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:orientation="vertical"
                        android:padding="@dimen/_8sdp">

                        <ImageView
                            android:layout_width="@dimen/_15sdp"
                            android:layout_height="@dimen/_15sdp"
                            android:src="@drawable/ic_search" />

                    </androidx.appcompat.widget.LinearLayoutCompat>

                </androidx.cardview.widget.CardView>

            </LinearLayout>

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="@dimen/_20sdp"
                android:background="@color/main_blue"
                android:orientation="horizontal"
                android:padding="@dimen/_4sdp">

                <TextView
                    android:id="@+id/txtNo"
                    android:layout_width="0dp"
                    android:layout_height="match_parent"
                    android:layout_weight="0.2"
                    android:gravity="center"
                    android:maxLines="1"
                    android:text="No"
                    android:textAllCaps="true"
                    android:textColor="@color/white"
                    android:textSize="@dimen/_7sdp"
                    android:textStyle="normal" />

                <TextView
                    android:id="@+id/txtQtyInbound"
                    android:layout_width="0dp"
                    android:layout_height="match_parent"
                    android:layout_weight="0.5"
                    android:gravity="center"
                    android:maxLines="1"
                    android:text="Code"
                    android:textAllCaps="true"
                    android:textColor="@color/white"
                    android:textSize="@dimen/_7sdp" />

                <TextView
                    android:id="@+id/txtDesc"
                    android:layout_width="0dp"
                    android:layout_height="match_parent"
                    android:layout_weight="0.75"
                    android:gravity="center"
                    android:maxLines="1"
                    android:text="Store Name"
                    android:textAllCaps="true"
                    android:textColor="@color/white"
                    android:textSize="@dimen/_7sdp" />

                <TextView
                    android:id="@+id/txtQtyScan"
                    android:layout_width="0dp"
                    android:layout_height="match_parent"
                    android:layout_weight="0.5"
                    android:gravity="center"
                    android:maxLines="1"
                    android:text="Address"
                    android:textAllCaps="true"
                    android:textColor="@color/white"
                    android:textSize="@dimen/_7sdp" />

                <TextView
                    android:id="@+id/txtSelect"
                    android:layout_width="0dp"
                    android:layout_height="match_parent"
                    android:layout_weight="0.5"
                    android:gravity="center"
                    android:maxLines="1"
                    android:text="Select"
                    android:textAllCaps="true"
                    android:textColor="@color/white"
                    android:textSize="@dimen/_7sdp" />

            </LinearLayout>

            <cz.kinst.jakub.view.SimpleStatefulLayout
                android:id="@+id/stateful"
                android:layout_width="match_parent"
                android:layout_height="match_parent">

                <androidx.recyclerview.widget.RecyclerView
                    android:id="@+id/listPlanJourney"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    tools:itemCount="4" />

            </cz.kinst.jakub.view.SimpleStatefulLayout>

        </androidx.appcompat.widget.LinearLayoutCompat>

    </ScrollView>

    <androidx.appcompat.widget.LinearLayoutCompat
        android:id="@+id/llButtons"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_marginLeft="@dimen/_8sdp"
        android:layout_marginTop="@dimen/_16sdp"
        android:layout_marginRight="@dimen/_8sdp"
        android:layout_marginBottom="@dimen/_10sdp"
        android:orientation="horizontal">

        <Button
            android:id="@+id/btnExit"
            android:layout_width="match_parent"
            android:layout_height="@dimen/_25sdp"
            android:layout_weight="1"
            android:background="@drawable/rectangle_button"
            android:text="Exit"
            android:textAllCaps="false"
            android:textColor="@color/white"
            android:textSize="@dimen/_7sdp" />

        <Button
            android:id="@+id/btnSubmit"
            android:layout_width="match_parent"
            android:layout_height="@dimen/_25sdp"
            android:layout_marginLeft="@dimen/_4sdp"
            android:layout_weight="1"
            android:background="@drawable/rectangle_button"
            android:text="Start Visit"
            android:textAllCaps="false"
            android:textColor="@color/white"
            android:textSize="@dimen/_7sdp" />

    </androidx.appcompat.widget.LinearLayoutCompat>

</RelativeLayout>

RecyclerView 可能包含很多項目(比如 > 80),這就是我將它放在 ScrollView 中的原因。 我希望按鈕永久保留在屏幕底部,這就是我使用android:layout_alignParentBottom="true"的原因。 但是當我跑進去的時候,結果並不是我所期望的。 事實證明,按鈕實際上是“浮動”在 ScrollView 的頂部,如下所示:

在此處輸入圖像描述

我想要的是包含按鈕的 LinearLayout 卡在底部,上面的 rest 完全被 ScrollView 占據。 如何解決這個問題?

我建議您使用ConstraintLayout並盡可能避免嵌套布局。 我已盡可能少地修改您的代碼以滿足您的需求,如下所示(將邊距/填充替換回您的願望):

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
    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">

  <LinearLayout
      android:id="@+id/layout_1"
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      android:layout_marginTop="4dp"
      android:orientation="horizontal"
      app:layout_constraintTop_toTopOf="parent">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:orientation="horizontal">

      <ImageView
          android:layout_width="55dp"
          android:layout_height="55dp"
          android:src="@drawable/ic_notification" />

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

        <TextView
            android:id="@+id/txtName"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="4dp"
            android:text="Paul Phoenix"
            android:textColor="#0000FF"
            android:textSize="14dp"
            android:textStyle="bold" />

        <TextView
            android:id="@+id/txtCode"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="4dp"
            android:text="PX2350"
            android:textColor="#0000FF"
            android:textSize="10dp"
            android:textStyle="bold" />

      </LinearLayout>

    </LinearLayout>


    <ImageView
        android:layout_width="60dp"
        android:layout_height="30dp"
        android:layout_gravity="center"
        android:src="@drawable/ic_notification" />

  </LinearLayout>

  <LinearLayout
      android:id="@+id/layout_2"
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      android:layout_marginTop="8dp"
      android:layout_marginBottom="2dp"
      android:background="@drawable/bg_pb"
      android:orientation="vertical"
      android:padding="16dp"
      app:layout_constraintTop_toBottomOf="@id/layout_1">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="20dp"
        android:layout_marginTop="4dp"
        android:background="#0000FF"
        android:orientation="horizontal">

      <TextView
          android:layout_width="0dp"
          android:layout_height="match_parent"
          android:layout_weight="0.75"
          android:gravity="center"
          android:maxLines="1"
          android:text="Day, Date"
          android:textAllCaps="true"
          android:textColor="#FFFFFF"
          android:textSize="7dp" />

    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="4dp"
        android:background="#000000"
        android:orientation="horizontal"
        android:padding="8dp">

      <TextView
          android:id="@+id/txtTanggal"
          android:layout_width="0dp"
          android:layout_height="match_parent"
          android:layout_weight="0.75"
          android:gravity="center"
          android:maxLines="1"
          android:text="0"
          android:textAllCaps="true"
          android:textSize="7dp" />

    </LinearLayout>


  </LinearLayout>

  <LinearLayout
      android:id="@+id/layout_search"
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      android:orientation="horizontal"
      app:layout_constraintTop_toBottomOf="@id/layout_2">

    <com.google.android.material.textfield.TextInputEditText
        android:id="@+id/input_search"
        android:layout_width="match_parent"
        android:layout_height="25dp"
        android:layout_gravity="center"
        android:layout_weight="1"
        android:background="@drawable/ic_notification"
        android:hint="Search Name Outlet"
        android:inputType="text"
        android:paddingHorizontal="10dp"
        android:textSize="7dp" />

    <androidx.cardview.widget.CardView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        app:cardBackgroundColor="#0000AA"
        app:cardCornerRadius="8dp"
        app:cardUseCompatPadding="true">

      <LinearLayout
          android:id="@+id/btnSearch"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:orientation="vertical"
          android:padding="8dp">

        <ImageView
            android:layout_width="15dp"
            android:layout_height="15dp"
            android:src="@drawable/ic_notification" />

      </LinearLayout>

    </androidx.cardview.widget.CardView>

  </LinearLayout>

  <LinearLayout
      android:id="@+id/layout_header"
      android:layout_width="match_parent"
      android:layout_height="20dp"
      android:background="#0000FF"
      android:orientation="horizontal"
      android:padding="4dp"
      app:layout_constraintTop_toBottomOf="@id/layout_search">

    <TextView
        android:id="@+id/txtNo"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="0.2"
        android:gravity="center"
        android:maxLines="1"
        android:text="No"
        android:textAllCaps="true"
        android:textColor="#FFFFFF"
        android:textSize="7dp"
        android:textStyle="normal" />

    <TextView
        android:id="@+id/txtQtyInbound"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="0.5"
        android:gravity="center"
        android:maxLines="1"
        android:text="Code"
        android:textAllCaps="true"
        android:textColor="#FFFFFF"
        android:textSize="7dp" />

    <TextView
        android:id="@+id/txtDesc"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="0.75"
        android:gravity="center"
        android:maxLines="1"
        android:text="Store Name"
        android:textAllCaps="true"
        android:textColor="#FFFFFF"
        android:textSize="7dp" />

    <TextView
        android:id="@+id/txtQtyScan"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="0.5"
        android:gravity="center"
        android:maxLines="1"
        android:text="Address"
        android:textAllCaps="true"
        android:textColor="#FFFFFF"
        android:textSize="7dp" />

    <TextView
        android:id="@+id/txtSelect"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="0.5"
        android:gravity="center"
        android:maxLines="1"
        android:text="Select"
        android:textAllCaps="true"
        android:textColor="#FFFFFF"
        android:textSize="7dp" />

  </LinearLayout>


  <androidx.recyclerview.widget.RecyclerView
      android:id="@+id/listPlanJourney"
      android:layout_width="match_parent"
      android:layout_height="0dp"
      app:layout_constraintBottom_toTopOf="@id/llButtons"
      app:layout_constraintTop_toBottomOf="@id/layout_header"
      tools:itemCount="4" />

  <LinearLayout
      android:id="@+id/llButtons"
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      android:layout_alignParentBottom="true"
      android:layout_marginLeft="8dp"
      android:layout_marginTop="16dp"
      android:layout_marginRight="8dp"
      android:layout_marginBottom="10dp"
      android:orientation="horizontal"
      app:layout_constraintBottom_toBottomOf="parent">

    <Button
        android:id="@+id/btnExit"
        android:layout_width="match_parent"
        android:layout_height="25dp"
        android:layout_weight="1"
        android:background="@drawable/bg_pb"
        android:text="Exit"
        android:textAllCaps="false"
        android:textColor="#FFFFFF"
        android:textSize="7dp" />

    <Button
        android:id="@+id/btnSubmit"
        android:layout_width="match_parent"
        android:layout_height="25dp"
        android:layout_marginLeft="4dp"
        android:layout_weight="1"
        android:background="@drawable/bg_pb"
        android:text="Start Visit"
        android:textAllCaps="false"
        android:textColor="#FFFFFF"
        android:textSize="7dp" />

  </LinearLayout>

</androidx.constraintlayout.widget.ConstraintLayout>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM