Android HorizontalScrollView嵌套横向LinearLayout,如何让按钮占满屏幕宽度?
实现横向滚动且每个按钮占满屏幕宽度的布局方案
嘿,我来帮你搞定这个需求!你的目标是让横向滚动栏里的每个按钮都占满屏幕宽度,还能像画廊一样横向滑动,原代码里的一些配置不对,咱们一步步调整:
原代码的问题分析
HorizontalScrollView的宽度设为wrap_content,没法占满屏幕,导致按钮的宽度也跟着受限- 内部的
LinearLayout用了fill_parent(现在推荐用match_parent)作为宽度,这样它会被限制在屏幕宽度内,没法横向扩展支持滚动 - 按钮的
layout_weight设置混乱,反而会让按钮的宽度不符合预期
修改后的完整代码
<?xml version="1.0" encoding="utf-8"?> <android.support.constraint.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"> <HorizontalScrollView android:layout_width="match_parent" android:layout_height="140dp" android:fillViewport="true"> <LinearLayout android:layout_width="wrap_content" android:layout_height="match_parent" android:orientation="horizontal"> <Button android:layout_width="match_parent" android:layout_height="match_parent" android:text="Button1" /> <Button android:layout_width="match_parent" android:layout_height="match_parent" android:text="Button2" /> <Button android:layout_width="match_parent" android:layout_height="match_parent" android:text="Button3" /> <Button android:layout_width="match_parent" android:layout_height="match_parent" android:text="Button4" /> <Button android:layout_width="match_parent" android:layout_height="match_parent" android:text="Button5" /> </LinearLayout> </HorizontalScrollView> </android.support.constraint.ConstraintLayout>
关键修改说明
- HorizontalScrollView:把宽度改成
match_parent让它铺满屏幕,同时添加android:fillViewport="true",确保内部布局能填满ScrollView的高度,避免按钮显示不全 - LinearLayout:宽度设为
wrap_content,这样它能根据所有按钮的总宽度自由扩展,支持横向滚动 - Button:移除了多余的
layout_weight,把宽度设为match_parent,这样每个按钮都会自动占满HorizontalScrollView的宽度(也就是屏幕宽度)
这样调整之后,你就能得到一个完美的画廊式横向滚动布局,每个按钮都刚好占满屏幕宽度,滑动时可以切换到下一个按钮啦!
内容的提问来源于stack exchange,提问作者Michele Schillaci




