Android 如何使布局垂直填充屏幕,但在内容不显示时开始增长';不合适

Android 如何使布局垂直填充屏幕,但在内容不显示时开始增长';不合适,android,kotlin,android-activity,Android,Kotlin,Android Activity,我希望我有一个例子来说明它是否令人困惑,但基本上我想做的是显示一个底部工具栏,其中有一个右导航按钮(例如,转到下一页)始终固定在屏幕底部,但如果页面(中间部分)上的内容增加,工具栏将向下推,因此您必须滚动才能找到它。我知道这看起来很奇怪,但这就是要求。最好的方法是什么?您可以通过使用android:fillViewport=“true”将滚动视图与垂直线性布局相结合来实现这一点,该布局在内容和导航栏之间具有空间android:layout\u weight=“1” <?xml versio

我希望我有一个例子来说明它是否令人困惑,但基本上我想做的是显示一个底部工具栏,其中有一个右导航按钮(例如,转到下一页)始终固定在屏幕底部,但如果页面(中间部分)上的内容增加,工具栏将向下推,因此您必须滚动才能找到它。我知道这看起来很奇怪,但这就是要求。最好的方法是什么?

您可以通过使用
android:fillViewport=“true”
滚动视图与垂直
线性布局相结合来实现这一点,该布局在内容和导航栏之间具有
空间
android:layout\u weight=“1”

<?xml version="1.0" encoding="utf-8"?>
<ScrollView
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fillViewport="true"
    tools:context=".MainActivity">

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

        <View
            android:layout_width="match_parent"
            android:layout_height="200dp"
            android:background="#ccc"/>

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

        <View
            android:layout_width="match_parent"
            android:layout_height="48dp"
            android:background="#eee"/>

    </LinearLayout>

</ScrollView>

第一个视图是要显示的任何内容的占位符,第二个视图是导航栏的占位符。您可以看到,当第一个视图较短(200dp高)时,您会在顶部看到“内容”,在底部看到导航栏:

这是因为
fillViewport
属性将“拉伸”子
LinearLayout
以填充屏幕,此时有“额外”空间,
space
元素上的
layout\u weight
属性将消耗所有空间。(请注意,尽管是
滚动视图
,但在这种状态下实际上无法滚动任何内容,因为视图已拉伸到屏幕的精确大小。)

但是,当“内容”足够高以填满屏幕时,
fillViewport
属性将不起作用,线性布局将不会被拉伸,也不会有任何额外的空间需要消耗。因此,一旦滚动到底部,您的内容将一直填充到导航栏的边缘:


(向左滚动到顶部,向右滚动到底部。)

这似乎是一个很好的解决方案。我将尝试一下(我对Android开发相当陌生)。