GridLayout上的Android按钮不是等距的

时间:2017-08-23 12:25:28

标签: android

我正在学习android并且作为编写小游戏的过程的一部分。以下是我的活动屏幕图片:

enter image description here

正如您所看到的,GridLayout包含不同行和列上的按钮。我给GridLayout内容的左右填充为15dp。它看起来很完美,但是当我启动模拟器并加载应用程序时,它看起来像这样:

enter image description here

整个网格搞砸了。它应该是屏幕的中间和底部。

以下是一小段代码示例:

<GridLayout
        android:id="@+id/gameGrid"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_centerVertical="true"
        android:paddingLeft="15dp"
        android:paddingRight="15dp">

        <!--First row buttons-->
        <Button
            android:id="@+id/button1"
            android:layout_width="80dp"
            android:layout_height="80dp"
            android:layout_column="1"
            android:layout_row="1" />

        <Button
            android:id="@+id/button2"
            android:layout_width="80dp"
            android:layout_height="80dp"
            android:layout_column="2"
            android:layout_row="1" />

        <Button
            android:id="@+id/button3"
            android:layout_width="80dp"
            android:layout_height="80dp"
            android:layout_column="3"
            android:layout_row="1" />

        <Button
            android:id="@+id/button4"
            android:layout_width="80dp"
            android:layout_height="80dp"
            android:layout_column="4"
            android:layout_row="1" />

        <!--- second row buttons then third and so on--->
        <!--- rest of the buttons with different column and row numbers-->
        <!---- every button has width and height of 80dp----->
</GridLayout>

当我单击单个按钮元素时,按钮似乎没有填满它所在的整个单元格。我尝试给它重力,重量但没有任何改变。

我哪里错了?任何帮助表示赞赏。

3 个答案:

答案 0 :(得分:0)

将此属性添加到GridLayout:

android:layout_centerHorizontal="true"

顺便说一句,我不建议使用GridLayout,它比其他解决方案灵活性更低,可定制性更低。例如,您可以使用RelativeLayout或单个RecicleView并以编程方式填充元素。

答案 1 :(得分:0)

android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_centerVertical="true"

对于RelativeLayout所以在你的情况下,正确的代码将是这样的

您将宽度设置为wrap_contentlayout_gravity 并选择您想要在代码中看到的重力,并希望它在屏幕中居中,因此请使用center

   <?xml version="1.0" encoding="utf-8"?>
    <GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/gameGrid"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:paddingLeft="15dp"
        android:layout_gravity="center"
        android:paddingRight="15dp">

        <!--First row buttons-->
        <Button
            android:id="@+id/button1"
            android:layout_width="80dp"
            android:layout_height="80dp"
            android:layout_column="1"
            android:layout_row="1" />

        <Button
            android:id="@+id/button2"
            android:layout_width="80dp"
            android:layout_height="80dp"
            android:layout_column="2"
            android:layout_row="1" />

        <Button
            android:id="@+id/button3"
            android:layout_width="80dp"
            android:layout_height="80dp"
            android:layout_column="3"
            android:layout_row="1" />

        <Button
            android:id="@+id/button4"
            android:layout_width="80dp"
            android:layout_height="80dp"
            android:layout_column="4"
            android:layout_row="1" />

<!-- The other raws -->
    </GridLayout>

答案 2 :(得分:0)

只需设置宽度和高度match_parent并为网格布局左右设置填充,并设置gravity = "center_horizontal|center_vertical“。希望这会有所帮助。