Visual Studio 开发安卓之布局-线性布局(LinearLayout)

作者:vkvi 来源:ITPOW(原创) 日期:2016-11-5

安卓有五种布局(五种布局之间可以嵌套混合使用),本文介绍最常用的一种:线性布局(LinearLayout)。

属性 android:orientation

这个属性值有:horizontal、vertical 两种值。

  • horizontal 表示下级元素是水平排列的(一行多个)。
  • vertical 表示下级元素是垂直排列的(一行一个)。

属性 android:layout_width

这个属性值还可以有:match_parent、wrap_content、fill_parent,这其中:match_parent、fill_parent 是一个意思,Google 推荐不要用 fill_parent,可能是因为它觉得这个名称不是很好吧。

  • match_parent 表示有空间就尽量拉伸。
  • wrap_content 表示根据内容宽度来展示。
除了这几个固定的值,还可以用“数值 + 单位”,比如:100dip,不过一般没这么做。

属性 android:padding

大多数情况下,需要一个 padding,免得靠边太近,和 CSS 一个意思,也有很多单位,推荐用 dip(device independent pixels(设备独立像素))。

属性 android:layout_weight

注意这里是 weight,别看走眼看成宽度了,这个默认是 0,但特殊布局下需要设置成 > 0 的值,> 0 表示在剩下的空间中我们几个 > 0 的控件按比例分配尺寸。

示例:我们希望实现下面这个效果:

安卓布局

代码:

代码太多,为了介绍方便,我们只介绍重要属性,并以缩进表示标签上下级关系。

  • LinearLayout orientation="vertical"、layout_width="match_parent"
    • LinearLayout orientation="horizontal"、layout_width="match_parent"
      • TextView layout_width="wrap_content"、layout_weight="0"
      • EditText layout_width="match_parent"、layout_weight="1"
      • TextView layout_width="wrap_content"、layout_weight="0"
      • EditText layout_width="match_parent"、layout_weight="1"
    • LinearLayout orientation="horizontal"、layout_width="match_parent"
      • TextView layout_width="wrap_content"、layout_weight="0"
      • EditText layout_width="match_parent"、layout_weight="1"
      • TextView layout_width="wrap_content"、layout_weight="0"
      • EditText layout_width="match_parent"、layout_weight="1"

最外层先套一个 LinearLayout,然后再在里面套两个 LinearLayout,由于里面的 LinearLayout 需要一行承载多个控件,所以其 orientation 为 horizontal。

然后每行里面再布局 TextView、EditText,由于标签文字固定,所以其 layout_width 可以设置为 wrap_content,而文本框不能这么设置,文本框必须设置成 match_parent,否则当输入文字的时候,文本框会变长,破坏布局。但是此时预览会发现后面的文本框显示不出来(因为挤到最右边的外面去了),所以我们为其加上 layout_weight="1",这样两个文本框就分配除标签以外,屏幕剩余的空间。

相关文章