1、当我们使用Linearlayout线性布局,放置三个TextView控件,设置android:layout_width属性为wrap_content,并分别设置android:layout_weight比重为1,2,3时:

                   

Android控件 -- 设置组件所占比例_第1张图片

可以看到三个TextView所占的宽度比为1:2:3,似乎是根据我们所设置的android:layout_width比重实现了比例控制,然而,当我们试着把textview1的文本内容修改为111111111时:

Android控件 -- 设置组件所占比例_第2张图片

原有的比例平衡被打破了,现在三个TextView的宽度比不再是1:2:3。

为什么呢?因为layout_width属性并不对整个可用空间进行分配,而是对剩余空间进行分配,也就是说系统会先按layout_width设置的属性先给控件分配空间,在这里的代码里是先分配空间使得每个控件足以包裹住内容,再将剩余的内容按layout_weight所设置的比例进行分配,控件最终的空间大小是layout_width属性设置的空间大小加上按比例分得的剩余空间大小,你细心观察将可以发现,上图UI中除去内容之外的控件还是1:2:3。

2、我们将layout_width的属性改为0dp试试:

Android控件 -- 设置组件所占比例_第3张图片

这时出现了两行 可使用 android:maxLine="1"。

3、我们再来看一个更好玩的,将layout_width设置为match_parent属性,再将三个控件比例设置为1:2:2。

                       
Android控件 -- 设置组件所占比例_第4张图片

不是说好按比例控制的吗?为什么TextView1所占的比例为1,确比占比为2的控件获得的空间更大的呢?

  我们来用刚刚的公式好好算算:

  剩余空间,是用父控件的大小也就是1个parent减去layout_width所设置的属性大小,每个控件原本的大小都设置为match_parent,也就是每个控件原本就应该获得1个parent控件的大小,这里有3个textview控件,也就是剩余空间的大小=1个parent-3个parent大小=-2个parent,于是textview1的大小=原来的大小1个parent+分配的剩余空间大小就是(-2parent)*1/5,最后等于3/5个parent,而其余的两个控件可以算出是1/5个parent,所以比例是3:1:1。

更多相关文章

  1. Android下拉刷新上拉加载控件,对所有View通用!
  2. Android UI系统控件进阶(四)—网格视图控件GridView
  3. 系出名门Android(5) – 控件(View)之TextView, Button, ImageBut
  4. Android Gallery控件使用方法详解
  5. Android利用系统提供的函数或常量判断版本大小
  6. 常用控件应用之文本框(TextView)特效
  7. Android ImageView设置长度高度为wrap_content时高度根据图片比
  8. android学习小结3-各种控件使用方式DEMO

随机推荐

  1. Android之路——第一个上线 APP项目总结
  2. 适用于Android的最佳免费待办事项列表应
  3. Android(安卓)使用模板生成Word文档,支持
  4. 在 SQL 数据库中保存数据
  5. android 中用代码模拟发送按键
  6. android 架包冲突解决方案
  7. 关于android textview,edittext,导致界面
  8. Android(安卓)App 网络接入实时监控
  9. 借腾讯开源 VasDolly,谈谈 Android(安卓)
  10. android黑科技之读取用户短信+插入短信到