如何在 ScrollView 内的 LinearLayout 底部放置按钮

Posted

技术标签:

【中文标题】如何在 ScrollView 内的 LinearLayout 底部放置按钮【英文标题】:How to place button at the bottom of LinearLayout within a ScrollView 【发布时间】:2020-11-09 08:40:51 【问题描述】:

我创建了一个 addview (xml)。当我按下添加按钮时,它会在 LinearLayout 中创建一个新按钮。添加按钮放置在同一个线性布局中。但是当我放置添加按钮时,它保持在相同的位置。但我希望按钮位于添加视图的底部。这是我的 xml。

    <ScrollView
    android:layout_
    android:layout_
    android:layout_below="@+id/banner"
    android:layout_above="@+id/linearmenu"
    android:layout_centerHorizontal="true">

    <LinearLayout
        android:id="@+id/linearLayout_addhere"
        android:layout_
        android:layout_gravity="top"
        android:layout_
        android:orientation="vertical" >

        <Button
            android:id="@+id/buttonAdd"
            android:layout_
            android:layout_
            android:layout_gravity="center"
            android:layout_marginTop="10dp"
            android:background="@drawable/add_button_design"
            android:drawableRight="@drawable/ic_add_white"
            android:paddingHorizontal="7dp"
            android:text="추가"
            android:textColor="#FFFFFF"
            android:textSize="18sp"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintHorizontal_bias="0.5"
            app:layout_constraintStart_toStartOf="parent" />


    </LinearLayout>

</ScrollView>

【问题讨论】:

【参考方案1】:

使用 LinearLayout

试试这种方式
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_
    android:layout_
    android:layout_above="@+id/linearmenu"
    android:layout_below="@+id/banner"
    android:layout_centerHorizontal="true"
    android:fillViewport="true">

    <LinearLayout
        android:layout_
        android:layout_
        android:orientation="vertical">

        <LinearLayout
            android:id="@+id/linearLayout_addhere"
            android:layout_
            android:layout_
            android:orientation="vertical"
            android:layout_weight="1">

        </LinearLayout>

        <Button
            android:id="@+id/buttonAdd"
            android:layout_
            android:layout_
            android:layout_gravity="bottom"
            android:layout_marginTop="10dp"
            android:paddingHorizontal="7dp"
            android:text="추가"
            android:textColor="#FFFFFF"
            android:textSize="18sp" />


    </LinearLayout>

</ScrollView>

使用 RelativeLayout

试试这种方式

<RelativeLayout
    android:layout_
    android:layout_
    android:orientation="vertical">
    

    <Button
        android:id="@+id/buttonAdd"
        android:layout_
        android:layout_
        android:layout_gravity="bottom"
        android:layout_marginTop="10dp"
        android:layout_alignParentBottom="true"
        android:paddingHorizontal="7dp"
        android:text="추가"
        android:textColor="#FFFFFF"
        android:textSize="18sp" />


</RelativeLayout>

使用 ConstraintLayout

试试这种方式
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_
    android:layout_
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_above="@+id/linearmenu"
    android:layout_below="@+id/banner"
    android:layout_centerHorizontal="true"
    android:fillViewport="true">

    <androidx.constraintlayout.widget.ConstraintLayout
        android:layout_
        android:layout_
        android:orientation="vertical">


        <Button
            app:layout_constraintLeft_toLeftOf="parent"
            app:layout_constraintRight_toRightOf="parent"
            app:layout_constraintBottom_toBottomOf="parent"
            android:id="@+id/buttonAdd"
            android:layout_
            android:layout_
            android:layout_gravity="bottom"
            android:layout_marginTop="10dp"
            android:layout_alignParentBottom="true"
            android:paddingHorizontal="7dp"
            android:text="추가"
            android:textColor="#FFFFFF"
            android:textSize="18sp" />


    </androidx.constraintlayout.widget.ConstraintLayout>

</ScrollView>

【讨论】:

以上是关于如何在 ScrollView 内的 LinearLayout 底部放置按钮的主要内容,如果未能解决你的问题,请参考以下文章

如何从 ScrollView 内的 RecyclerView 中移除焦点?

在 SwiftUI 中,如何通过动态变化的滚动区域来缩放 scrollView 内的内容?

基维。 GridLayout 在 ScrollView 内的位置

带有 DrawerLayout 的 ScrollView 内的 ListView

解决Android中,禁止ScrollView内的控件改变之后自动滚动 - 转

导航控制器内的iOS ScrollView + Page Controller:如何更改每个页面的导航栏标题?