2 u012131702 u012131702 于 2014.12.11 13:05 提问

请问Android的GridLayout的子元如何平分屏幕

就是我们弄计算机的布局时,都不能平分屏幕的,
当第一行有两个元素时。它们的宽度大小如何平分屏幕?

7个回答

Mr_ye
Mr_ye   2015.08.14 17:07
已采纳

楼上自己不行,就不要说控件垃圾 我就用的 girdlayout 照样居中平分了?图片说明

GridLayout 设置权重属性确实没有毛用,你给他的每个item 布局设置为屏幕的 1/x 不就结了。

final View convertView = LayoutInflater.from(context).inflate(R.layout.people_ly, null);
convertView.setTag(con);
TextView tv =(TextView) convertView.findViewById(R.id.tv_names);
LinearLayout.LayoutParams lp=new LayoutParams(ScreenUtils.getScreenWidth()/COUNT, LinearLayout.LayoutParams.WRAP_CONTENT);
convertView.setLayoutParams(lp);

    mGridLayout.setColumnCount(COUNT);   这里的count 为我设置的列 为 4  
ght957733257
ght957733257 GridLayout在xml文件中没有layout_weight这个属性,所以在xml布局中根本无法控制布局中的子组件平分横向空间。所以楼上的解决方法是这类问题的比较好的方法,在布局参数的类中设置宽度属性和左右margin,在代码中控制其布局是比较理想的。再如果你的Item如果很多的话个人建议去使用GridView把,代码在xml中比较少,只是需要一个适配器,当然换来的是项目维护更新起来非常方便,有利于代码重构。
大约 2 年之前 回复
lxq_xsyu
lxq_xsyu   Rxr 2014.12.11 13:18

设置一个属性:android:columnCount="2"就ok了啊!

lxq_xsyu
lxq_xsyu 你将GridLayout中的左右两个元素的宽度权重设置为1试一下
3 年多之前 回复
u012131702
u012131702 回复lxq_xsyu: 不行呀,gridView不会平分的,设置这个同样
3 年多之前 回复
lxq_xsyu
lxq_xsyu 回复u012131702: 你要平分屏幕就必须girdview设置android:layout_width="match_parent"
3 年多之前 回复
u012131702
u012131702 你这个只能说明横向有连个格子,但是不能说,这连个格子平分了屏幕????
3 年多之前 回复
Arcplum
Arcplum   2015.07.17 10:25

我他妈早就发现GridLayout根本不能设置居中,这个控件根本就他妈的没个屌用,楼上都他妈的傻屌

qaserfvvbbert
qaserfvvbbert   2014.12.14 15:50

子元的layout_weight="0sp"
layout_weight="1"试试

lvyunxing
lvyunxing 回复灰太狼的星: 设置columnCount = 2,然后设置子View的layout_columnWeight = 1,就可以了
接近 2 年之前 回复
lvyunxing
lvyunxing 我试了你这个,可以,平分了
接近 2 年之前 回复
qaserfvvbbert
qaserfvvbbert 回复u012131702: 查了下,gridlayout默认子元wrap_content,直接用linearlayout吧
3 年多之前 回复
u012131702
u012131702 很不幸,没有这个属性layout_weight;真心不知道这个如何实现?找了好多都是降到使用,妈的就没有一个人发现这个布局不好看的,都是按照子元素的大小,这样有毛用
3 年多之前 回复
u011693448
u011693448   2016.05.23 14:18

API 21以上可以用他的这个属性:
android:layout_columnWeight="1"
android:layout_rowWeight="1"
配合
android:rowCount="3"
android:columnCount="2"
可以实现等分

sawdouma
sawdouma 前排提醒,还要记得给子控件设置 android:layout_width="0dp" android:layout_height="0dp",这样就有用了。
8 个月之前 回复
sawdouma
sawdouma 回复joyment2010: 根本没用,你试试把里面的textView的字符串弄长一些,就没法等分了。
8 个月之前 回复
u011517042
u011517042 这个是可以的,请大家知悉!!!!!
一年多之前 回复
huisedebi1991
huisedebi1991   2015.11.15 00:20

gridlayout就是tm个SB

u012131702
u012131702   2014.12.11 13:28

android:layout_width="match_parent"
android:layout_height="match_parent"
android:columnCount="2"
android:rowCount="2">

<Button
    android:layout_column="0"
    android:layout_row="0" />

<Button
    android:layout_column="1"
    android:layout_gravity="fill_vertical"
    android:layout_row="0"
    android:layout_rowSpan="2" />

<Button
    android:layout_column="0"
    android:layout_row="1" />

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!