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开发相当陌生)。