Android:layout_weight的使用和坑

问题

今天做项目有一个需求,一个TextView单行显示,多出来的字使用跑马灯效果,然后一个TextView后面要跟一个图片,当时想着怎么弄好呢,文字的长度是变化的,也不能给他固定值,用LinearLayout总会把图片顶出屏幕之外,用layout_weight也不行呀,TextView的长度或许长或许短,不确定图片在整个布局中所占的比例到底是多少,那用RelativeLayout吧,TextView在父布局左边,图片跟在TextView右边,还是会被顶到屏幕外,图片在父布局右边,TextView跟在图片左边,那文字长度短了都跑在右边了,后来还想到用MaxWidth限制一下TextView的长度?哈哈,想想这个思路也是醉了。其实还是一个坑,没有真正的理解layout_weight的含义!!!

解决

我们知道layout_weight只能在线性布局当中使用,之前用呢,也是很简单,需要在哪个方向按比例分配,就把布局中的控件的宽度或者高度设为0dp,然后使用layout_weight属性就会按比例分配

其实layout_weight真正的含义是原有宽度加上剩余宽度的占比

都设置为0呢,控件没有原有宽度,直接给几个控件按比例分配吧

都设置为wrap_content呢,就是每个控件肯定会先分配空间,然后剩下空间的再按比例分配,那么可以解决我的问题了:

<LinearLayout
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:orientation="horizontal">
      <TextView
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:singleLine="true"
          android:layout_weight="1"
          android:text="aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"/>
      <ImageView
          android:layout_width="20dp"
          android:layout_height="20dp"
          android:src="@drawable/has_approve" />
   </LinearLayout>

这样的话,肯定会先给ImageView一个空间,也给TextView一个空间,text虽然长,但是自适应也是会给ImageView留空间的然后剩下的空间全部分配给TextView。

width设为0、wrap_content、match_parent都不一样的,而且哪个控件使用和不使用layout_weight属性也都是有区别的

这里就不多阐述了哈,记住那个真正的含义就好!

总结

就这么简单一个小问题困扰了我整整1个多小时,想的太多了,最后用了一行代码解决,总结来看,还是知识记忆模糊,没有深刻理解layout_weight的含义,导致解决问题这么慢,还是多多注重基础知识,一个点一个点的深刻记忆,慢慢积累。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值