android中weight计算方法,【记录】Android中TextView的weight的用法

【背景】

之前学习Android的UI期间,更深入的了解了TextView的weight的含义:

但是却没有实际经验和心得。

后来,折腾Android的UI期间,用到了这个weight。

整理如下:

【利用TextView的weight实现LinearLayout中各个TextView自适应宽度】

对于如下的xml布局定义:

android:layout_marginTop="10sp"

android:layout_width="wrap_content"

android:layout_height="80sp"

android:layout_below="@+id/searchDeviceLayout"

android:layout_toRightOf="@+id/searchOptions"

android:orientation="vertical" >

android:id="@+id/polling_address"

android:layout_width="wrap_content"

android:layout_height="40sp"

android:orientation="horizontal" >

android:layout_width="100sp"

android:layout_height="wrap_content"

android:layout_gravity="center_vertical"

android:text="@string/polling_address_option"

style="@style/NormalText.Gray1" >

android:paddingLeft="5sp"

android:id="@+id/pollingAddressValue"

android:layout_width="120sp"

android:layout_height="wrap_content"

android:gravity="center"

android:inputType="number"

style="@style/NormalText.Gray1" />

android:id="@+id/polling_range"

android:layout_width="wrap_content"

android:layout_height="40sp"

android:orientation="horizontal" >

android:layout_width="100sp"

android:layout_height="wrap_content"

android:layout_gravity="center_vertical"

android:text="@string/polling_range_option"

style="@style/NormalText.Gray1" >

android:id="@+id/from_to"

android:layout_width="120sp"

android:layout_height="wrap_content"

android:orientation="horizontal"

android:layout_gravity="center_vertical">

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_weight="1"

android:gravity="center"

android:text="@string/from"

style="@style/NormalText.Gray1" >

android:id="@+id/pollingRangeFromValue"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_weight="2"

android:gravity="center"

android:inputType="number"

style="@style/NormalText.Gray1" />

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_weight="1"

android:gravity="center"

android:text="@string/to"

style="@style/NormalText.Gray1" >

android:id="@+id/pollingRangeToValue"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_weight="2"

android:gravity="center"

android:inputType="number"

style="@style/NormalText.Gray1" />

上述的效果为:

8200172ddaab75f7fb642f6bedba1178.png

中的polling_address和polling_range,其内部的pollingAddressValue和polling_range,

此处都是固定宽度为120sp的,为的是两者一样宽,才显得对齐和好看。

但是polling_range内部,从左到右有4个TextView,如果不是用weight,那么长度就要自己手动指定宽度,就显得很不智能。

而此处,通过设置为weight分别为1,2,1,2,则可以在,改变了总体的LinearLayout的宽度后,自动根据1:2:1:2的比例去自适应宽度。

比如,此处把宽度从120sp改为200sp:

android:layout_marginTop="10sp"

android:layout_width="wrap_content"

android:layout_height="80sp"

android:layout_below="@+id/searchDeviceLayout"

android:layout_toRightOf="@+id/searchOptions"

android:orientation="vertical" >

android:id="@+id/polling_address"

android:layout_width="wrap_content"

android:layout_height="40sp"

android:orientation="horizontal" >

android:layout_width="100sp"

android:layout_height="wrap_content"

android:layout_gravity="center_vertical"

android:text="@string/polling_address_option"

style="@style/NormalText.Gray1" >

android:paddingLeft="5sp"

android:id="@+id/pollingAddressValue"

android:layout_width="200sp"

android:layout_height="wrap_content"

android:gravity="center"

android:inputType="number"

style="@style/NormalText.Gray1" />

android:id="@+id/polling_range"

android:layout_width="wrap_content"

android:layout_height="40sp"

android:orientation="horizontal" >

android:layout_width="100sp"

android:layout_height="wrap_content"

android:layout_gravity="center_vertical"

android:text="@string/polling_range_option"

style="@style/NormalText.Gray1" >

android:id="@+id/from_to"

android:layout_width="200sp"

android:layout_height="wrap_content"

android:orientation="horizontal"

android:layout_gravity="center_vertical">

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_weight="1"

android:gravity="center"

android:text="@string/from"

style="@style/NormalText.Gray1" >

android:id="@+id/pollingRangeFromValue"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_weight="2"

android:gravity="center"

android:inputType="number"

style="@style/NormalText.Gray1" />

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_weight="1"

android:gravity="center"

android:text="@string/to"

style="@style/NormalText.Gray1" >

android:id="@+id/pollingRangeToValue"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_weight="2"

android:gravity="center"

android:inputType="number"

style="@style/NormalText.Gray1" />

则自适应后的效果为:

a34176a629a0abdfccd3c7612fbc8573.png

总的来说:

可以在合适的时候,对于LinearLayout中去使用weight去控制其中的TextView等控件,以达到可以根据宽度不同而自适应宽度的效果。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值