我正在学习android并且作为编写小游戏的过程的一部分。以下是我的活动屏幕图片:
正如您所看到的,GridLayout包含不同行和列上的按钮。我给GridLayout内容的左右填充为15dp。它看起来很完美,但是当我启动模拟器并加载应用程序时,它看起来像这样:
整个网格搞砸了。它应该是屏幕的中间和底部。
以下是一小段代码示例:
<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>
当我单击单个按钮元素时,按钮似乎没有填满它所在的整个单元格。我尝试给它重力,重量但没有任何改变。
我哪里错了?任何帮助表示赞赏。
答案 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_content
和layout_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
“。希望这会有所帮助。