如何使GridLayout内的按钮尺寸统一且无固定值填满整个布局
如何使GridLayout内的按钮尺寸统一且无固定值填满整个布局
嘿,我懂你的需求——嵌套在GridLayout里的6个按钮要统一大小,还得填满父布局,不能用固定尺寸对吧?其实只需要调整按钮的几个布局属性就行,我帮你改下代码,顺便说下关键逻辑:
首先你现在的Button用的是wrap_content宽高,这会让按钮只适应自身内容大小,没法填满Grid的单元格。我们需要把每个Button的宽高改成0dp,然后给它们加上列权重和行权重,让Grid自动分配空间,这样所有按钮就能平分整个Grid的区域了。
修改后的完整GridLayout代码如下:
<android.support.v7.widget.GridLayout android:layout_width="0dp" android:layout_height="0dp" android:layout_weight="0.5" app:layout_columnWeight="1" app:layout_rowWeight="1" app:columnCount="2" app:rowCount="3"> <Button android:layout_width="0dp" android:layout_height="0dp" android:paddingLeft="20dp" android:text="@string/pocetna_dugme_prijava_problema" style="@style/StartMenuButton" android:background="@drawable/rounded_corners_button_start_menu" android:id="@+id/btnPrijavaProblemaLink" app:layout_columnWeight="1" app:layout_rowWeight="1" android:layout_gravity="fill"/> <Button android:layout_width="0dp" android:layout_height="0dp" android:text="@string/pocetna_dugme_prijava_ebill" style="@style/StartMenuButton" android:background="@drawable/rounded_corners_button_start_menu" android:id="@+id/btnPrijavaEracunLink" app:layout_columnWeight="1" app:layout_rowWeight="1" android:layout_gravity="fill"/> <Button android:layout_width="0dp" android:layout_height="0dp" android:text="@string/pocetna_dugme_prijava_ukljucenje" style="@style/StartMenuButton" android:background="@drawable/rounded_corners_button_start_menu" android:id="@+id/btnUkljucenjeLink" app:layout_columnWeight="1" app:layout_rowWeight="1" android:layout_gravity="fill"/> <Button android:layout_width="0dp" android:layout_height="0dp" android:text="@string/pocetna_dugme_prepaid_dopuna" android:padding="0dp" android:drawableBottom="@drawable/prepaid10" style="@style/StartMenuButton" android:background="@drawable/rounded_corners_button_start_menu" android:id="@+id/btnPrepaidDopunaLink" app:layout_columnWeight="1" app:layout_rowWeight="1" android:layout_gravity="fill"/> <!-- 剩下两个Button也照这个格式修改哦 --> </android.support.v7.widget.GridLayout>
关键修改点说明:
- android:layout_width="0dp" 和 android:layout_height="0dp":这是让权重属性生效的前提,告诉系统“我不自己决定大小,靠权重分配”。
- app:layout_columnWeight="1":同一行的两个按钮各占1份宽度,所以会平分整个行的宽度。
- app:layout_rowWeight="1":三行的按钮各占1份高度,自动平分Grid的总高度。
- android:layout_gravity="fill":确保按钮完全填满分配给它的单元格,不会因为内容少而留空。
这样改完之后,不管外层Grid怎么调整大小,里面的6个按钮都会保持统一尺寸,自动填满整个布局,完全不用固定dp值,完美适配你的需求~
备注:内容来源于stack exchange,提问作者makse
相关产品推荐
相关产品推荐

