Android的GridLayout的子元素如何平分屏幕

DouMiaoO_Oo 2015-10-24 09:22:36
学习android的新手,折腾了好几个小时了... android版本4.4,我现在问题如下:
1.我想让0~8这几个button均匀分布,之间的间隙大一些能够充满屏幕
2.如果gridlayout设置android:layout_width="fill_parent"那么子元素会左对齐

这时 gridlayout设置为 android:layout_gravity="center"或者"horizon_center"都没有效果。是不是一定不能用fill_parent了呢,可以怎么设置才能让1~9居中呢?
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
tools:context=".MainActivity"
android:orientation="vertical"
android:id="@+id/mainActivity">
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:id="@+id/txt"
/>
<GridLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:gravity = "center_horizontal"
android:useDefaultMargins="true"
>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_grivity="center"
android:text="@string/_0"
android:layout_row="0"
android:layout_column="0"
android:textSize="40dp"
android:layout_rowWeight="1"

/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_grivity="center"
android:text="@string/_1"
android:layout_row="0"
android:layout_column="1"
android:textSize="40dp"

/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_grivity="center"
android:text="@string/_2"
android:layout_row="0"
android:layout_column="2"
android:textSize="40sp"
android:layout_rowWeight="1"
/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/_3"
android:layout_row="1"
android:layout_column="0"
android:textSize="40dp"
/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/_4"
android:layout_row="1"
android:layout_column="1"
android:textSize="40dp"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/_5"
android:layout_row="1"
android:layout_column="2"
android:textSize="40dp"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/_6"
android:layout_row="2"
android:layout_column="0"
android:textSize="40dp"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/_7"
android:layout_row="2"
android:layout_column="1"
android:textSize="40dp"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/_8"
android:layout_row="2"
android:layout_column="2"
android:textSize="40dp"/>
</GridLayout>
</LinearLayout>
...全文
18325 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
风之旅人、 2017-05-17
  • 打赏
  • 举报
回复
多谢多谢!!!
bonepeople 2016-08-10
  • 打赏
  • 举报
回复
虽然有些挖坟的嫌疑,但我觉得还是有必要回复一下,以免误导新人。 1楼和2楼的方法并不适用于楼主,在开头楼主已经明确说明了是android 4.4版本,而 android:layout_columnWeight="1"属性是5.0(API 21)才加入的特性,所以按照两位的方法并不能解决问题,如果要用还需要导入v7包,使用v7包内的GridLayout才行。
城枫墨凉 2016-06-23
  • 打赏
  • 举报
回复
因为你要知道,layout_gravity并不是所有的layout都能用,你可以这样想,表格布局方式中,控件的位置在表格中的某行某列被固定了,使用layout_gravity没什么用。哈哈,我只是大二新人
jklwan 2015-10-24
  • 打赏
  • 举报
回复
GridLayout修改android:layout_height="wrap_content"为android:layout_width="match_parent"并加上属性

android:columnCount="3"
android:rowCount="3"
所有的按钮加上

android:layout_columnWeight="1"
android:layout_rowWeight="1" 
DouMiaoO_Oo 2015-10-24
  • 打赏
  • 举报
回复
修改成以下就好了:
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
tools:context=".MainActivity"
android:orientation="vertical"
android:id="@+id/mainActivity">
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/txt"
/>
<GridLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"

android:columnCount="4"
android:rowCount="5"
android:useDefaultMargins="true"
>

<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:text="@string/_1"
android:layout_row="0"
android:layout_column="0"
android:textSize="40dp"
android:layout_columnWeight="1"
android:layout_rowWeight="1"
/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:text="@string/_2"
android:layout_row="0"
android:layout_column="1"
android:textSize="40dp"
android:layout_columnWeight="1"
android:layout_rowWeight="1"
/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:text="@string/_3"
android:layout_row="0"
android:layout_column="2"
android:textSize="40sp"
android:layout_columnWeight="1"
android:layout_rowWeight="1"
/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:text="@string/_4"
android:layout_row="1"
android:layout_column="0"
android:textSize="40dp"
android:layout_columnWeight="1"
android:layout_rowWeight="1"
/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:text="@string/_5"
android:layout_row="1"
android:layout_column="1"
android:textSize="40dp"
android:layout_columnWeight="1"
android:layout_rowWeight="1" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:text="@string/_6"
android:layout_row="1"
android:layout_column="2"
android:textSize="40dp"
android:layout_columnWeight="1"
android:layout_rowWeight="1" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:text="@string/_7"
android:layout_row="2"
android:layout_column="0"
android:textSize="40dp"
android:layout_columnWeight="1"
android:layout_rowWeight="1" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:text="@string/_8"
android:layout_row="2"
android:layout_column="1"
android:textSize="40dp"
android:layout_columnWeight="1"
android:layout_rowWeight="1" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:text="@string/_9"
android:layout_row="2"
android:layout_column="2"
android:textSize="40dp"
android:layout_columnWeight="1"
android:layout_rowWeight="1" />

<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:text="@string/_star"
android:layout_row="3"
android:layout_column="0"
android:textSize="40dp"
android:layout_columnWeight="1"
android:layout_rowWeight="1" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:text="@string/_0"
android:layout_row="3"
android:layout_column="1"
android:textSize="40dp"
android:layout_columnWeight="1"
android:layout_rowWeight="1" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:text="@string/_pound"
android:layout_row="3"
android:layout_column="2"
android:textSize="40dp"
android:layout_columnWeight="1"
android:layout_rowWeight="1" />


<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="fill"
android:text="@string/_minus"
android:layout_row="3"
android:layout_columnSpan="3"

android:textSize="40dp"
/>

<!--<Button-->
<!--android:layout_width="wrap_content"-->
<!--android:layout_height="wrap_content"-->
<!--android:layout_gravity="fill"-->
<!--android:text="@string/_minus"-->
<!--android:layout_row="1"-->
<!--android:layout_column="3"-->
<!--android:layout_rowSpan="4"-->
<!--/>-->

</GridLayout>
</LinearLayout>




不过我还是很奇怪,GridLayout中添加android:gravity="center_horizontal"添加这个没有什么效果。
为什么那些子元素button不能在每个grid中对齐呢?

80,362

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧