Android布局问题:ScrollView设fill parent后底部按钮被挤出屏幕
问题解决:ScrollView挤压底部布局的适配方案
你的问题出在垂直LinearLayout中ScrollView的高度设置:当给ScrollView设置layout_height="fill_parent"(现在官方推荐用match_parent)时,它会占据父布局的全部可用高度,直接把底部的按钮布局挤出屏幕。
要实现顶部按钮+中间滚动区域+底部固定按钮的适配布局,只需修改ScrollView的两个属性:
- 将
layout_height设为0dp - 添加
layout_weight="1"
修改后的完整布局代码:
<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/main" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context=".RuntimeActivity"> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="end" android:text="Settings" /> <ScrollView android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1"> <!-- 在这里添加ScrollView的内容 --> </ScrollView> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical"> <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Start" android:textSize="30dp" /> <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Pause" android:textSize="20dp" /> </LinearLayout> </LinearLayout>
原理说明
在垂直方向的LinearLayout中:
- 顶部按钮和底部按钮布局用
wrap_content,只会占据自身需要的高度 - ScrollView设置
layout_height="0dp"+layout_weight="1",会自动分配顶部和底部布局之外的所有剩余空间,完美适配任意屏幕尺寸。
另外注意:fill_parent是Android早期写法,现在官方推荐使用match_parent,两者功能一致,但后者语义更清晰。
内容的提问来源于stack exchange,提问作者Aisaax
相关产品推荐
相关产品推荐

