关于layout_weight的一个很有意思的特点

探讨了在Android SDK 2.3版本中,不同设置下layout_weight属性导致的UI元素宽度分配异常现象。通过对比分析,揭示了使用fill_parent与wrap_content时,相同权重值下元素显示的不同效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在之前版本的SDK中是否有这个现象我不是很确定,我也没有去求证,但是在我目前正在使用的2.3版本的SDK上我发现了一个很有意思的事情,是关于layout的XML里的layout_weight属性的问题。

我们都知道,layout_weight设置的是这个控件在屏幕中所占据的位置的宽度或者高度。其设置值是一些int型的数值。
接下来我们看下面的代码片段
  1. <TableRow android:layout_width="fill_parent"
  2.     android:layout_height="wrap_content">

  3.     <EditText android:id="@+id/EditText01"
  4.         android:text="EditText01"
  5.         android:layout_width="wrap_content"
  6.         android:layout_height="wrap_content"
  7.         android:layout_weight="8"/>
  8.         
  9.     <Button android:id="@+id/Button01"
  10.         android:text="Btn01"
  11.         android:layout_width="wrap_content"
  12.         android:layout_height="wrap_content"
  13.         android:layout_weight="2"/>

  14. </TableRow>
复制代码
这个代码片段中我们可以了解到,在一行中,我们放置了两个控件,一个输入框(EditText),一个按钮(Button),对于他们的宽度呢,我们希望它们能够根据屏幕的宽度进行自适应,因此我们分别对它们使用了android:layout_weight="8"和android:layout_weight="2"这样的属性设置。也就是说我们期望输入框占屏幕宽度的80%,按钮占屏幕宽度的20%。
如下图所示,我们果然得到了我们想要的效果:
1.JPG 

下面我们对上面的代码做点稍微的改动:
<TableRow android:layout_width="fill_parent"
    android:layout_height="wrap_content">

    <EditText android:id="@+id/EditText01"
        android:text="ETxt"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_weight="8"/>
        
    <Button android:id="@+id/Button01"
        android:text="Btn01"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_weight="2"/>

</TableRow>

主意到上面红色的部分了吗?我们只改变了这些,但是输入框和按钮的宽度却发生了很大的变化。
输入框占了屏幕宽度的20%,按钮占了屏幕宽度的80%,是不是很有意思?
2.JPG 
我不确定在之前的版本上是不是也有同样的现象,我个人之前没有留意到这个事情,因此发出来跟大家分享一下,早就发现了这个“秘密”的大虾可以去打酱油了

另外,使用wrap_content和fill_parent,当layout_weight的值都相同时,表现出来的结果也是不一样的

下图中的每一列的layout_weight的值都为1
当每一列的宽都使用fill_parent的时候
android:layout_width="fill_parent"
每一列的宽度都是一样的
如下图
fill_parent.jpg 

当每一列的宽都使用wrap_content的时候
android:layout_width="wrap_content"
“10月”,“11月”,“12月”几列的宽度,明显要宽一些
因为它们的字多一些
如下图
wrap.jpg

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值