You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.23 14:12:41