作者:郭孝星
微博:郭孝星的新浪微博
博客:http://blog.csdn.net/allenwells
github:https://github.com/AllenWell
本篇文章介绍在做界面布局时一些技巧,使得布局更加合理而高效。
一 让控件填满剩余宽度或高度
定义了一个EditText和Button如下图所示:
这样设置对按钮来说很合适,但是对于文本框来说就不太好了,因为用户可能输入更长的文本内容。因此如果能够占满整个屏幕宽度会更好。LinearLayout使用权重的属性来达到这个目的,你可以使用android:layout_weight属性来设置。
你可以根据每一个部件所占的空间来指定权重值的大小,它的总数是有同级别的部件来决定的。就类似于饮料的成分配方:“两份伏特加酒,一份咖啡利口酒”,意思就是这个酒中伏特加酒占三分之二。例如,你设置一个View的权重是2,另一个View的权重是1,那么总数就是3,这时第一个View占据2/3的空间,第二个占据1/3的空间。如果你再加入第三个View,权重设为1,那么第一个View(权重为2的)会占据1/2的空间,剩余的另外两个View各占1/4。(请注意,使用权重的前提一般是给View的宽或者高的大小设置为0dp,然后系统根据上面的权重规则来计算View应该占据的空间。但是很多情况下,如果给View设置了match_parent的属性,那么上面计算权重时则不是通常的正比,而是反比,也就是权重值大的反而占据空间小)。对于所有的View默认的权重是0,如果你只设置了一个View的权重大于0,那么这个View将占据除去别的View本身占据的空间的所有剩余空间。因此这里设置EditText的权重为1,使其能够占据除了按钮之外的所有空间。
为了提升布局的效率,在设置权重的时候,你应该把EditText的宽度设置为0dp。如果你设置为”wrap_content”作为宽度,系统需要自己去计算这个部件所占有的宽度,而此时的因为你设置了权重,所以系统自动会占据剩余空间,EditText的宽度最终成了不起作用的属性。
改动后的效果如下图所示:
版权声明:本文为博主原创文章,未经博主允许不得转载。