Android 7.1.1中GridView上方添加Button无法显示问题求助
问题分析与解决方案
嘿,我立马就发现问题所在啦!你的布局里LinearLayout是垂直方向排列的,而GridView的layout_height设为了wrap_content——如果GridView里的内容足够多,它会直接占满整个屏幕的高度,把下面的Button完全挤出可视区域,这就是你看不到按钮的原因!
快速修复方案
只需要调整GridView和Button的布局参数,让它们合理分配屏幕空间:
把GridView的layout_height改成0dp,并添加layout_weight="1",这样它会自动填充除了Button之外的剩余空间,而Button就能正常显示在GridView下方了。修改后的布局代码如下:
<?xml version="1.0" encoding="utf-8" ?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <GridView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/images_grid_view" android:layout_width="match_parent" android:layout_height="0dp" <!-- 这里改成0dp --> android:layout_weight="1" <!-- 添加权重 --> android:adjustViewBounds="true" android:columnWidth="180dp" android:gravity="center" android:horizontalSpacing="8dp" android:numColumns="3" android:padding="16dp" android:stretchMode="columnWidth" android:verticalSpacing="8dp"> </GridView> <Button android:text="Next" android:id="@+id/next_Button" android:layout_gravity="center_horizontal" android:layout_width="match_parent" android:layout_height="wrap_content" <!-- 这里改成wrap_content更合理 --> android:layout_margin="16dp"/> <!-- 加个边距更美观 --> </LinearLayout>
进阶优化方案
如果你希望按钮固定在屏幕底部(即使GridView内容很少),可以改用ConstraintLayout或者RelativeLayout,举个ConstraintLayout的例子:
<?xml version="1.0" encoding="utf-8" ?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent"> <GridView android:id="@+id/images_grid_view" android:layout_width="match_parent" android:layout_height="0dp" android:adjustViewBounds="true" android:columnWidth="180dp" android:gravity="center" android:horizontalSpacing="8dp" android:numColumns="3" android:padding="16dp" android:stretchMode="columnWidth" android:verticalSpacing="8dp" app:layout_constraintTop_toTopOf="parent" app:layout_constraintBottom_toTopOf="@id/next_Button"/> <Button android:id="@+id/next_Button" android:text="Next" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="16dp" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toEndOf="parent"/> </androidx.constraintlayout.widget.ConstraintLayout>
这样不管GridView内容多少,按钮都会牢牢固定在底部,布局也更灵活。
内容的提问来源于stack exchange,提问作者Rahul Singh
相关产品推荐
相关产品推荐

