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的含义,导致解决问题这么慢,还是多多注重基础知识,一个点一个点的深刻记忆,慢慢积累。
相关阅读
Java代码 <pre name="code" class="java">ContentResolver cr = getContentResolver();Cursor cursor = cr.query(ContactsContr
Android中Adapter的notifyDataSetInvalidated()和noti
notifyDataSetChanged方法通过一个外部的方法控制如果适配器的内容改变时需要强制调用getView来刷新每个Item的内容。public void
在拜读和翻译了Android design设计指导后,对比Android 4.0与Android2.3及之前版本的app设计指导,总结了Android 4.0设计的10大改变:1
Android9.0,5.0,6.0,7.0,8.0新特性整理
Android 9.0新特性 1、全面屏支持,Android P加入了对刘海屏的支持,谷歌称之为凹口屏幕(display with a cutout)。借助最新的提
android cts测试方法及步骤 Android gts测试方法与步
CTS 是一个兼容性性测试工具。是Android TV 的必备条件。 CTS 是一个自动化测试工具,其中包括两个主要软件组件: CTS tradefed 自动