首页 理论教育 线性布局(LinearLayout)介绍

线性布局(LinearLayout)介绍

时间:2023-06-27 理论教育 版权反馈
【摘要】:LinearLayout是一种非常常见的布局。修改“activity_main.xml” 文件中LinearLayout的排列方向,代码如下:线性布局中的android:orientation属性值指定为horizontal,也就是线性布局里的控件被指定为水平方向排列。同理,当LinearLayout的排列方向是垂直方向时,内部控件的高度绝对不能指定为match_parent。图5-17线性布局的android:layout_weight属性的使用效果R5-7LinearLayout实例在这个布局文件里,android:layout_width属性不生效了,就算把它指定为0,文本编辑框和按钮一样展示出来了。

线性布局(LinearLayout)介绍

LinearLayout是一种非常常见的布局。在线性布局里,所有控件都在线性方向上依次排列。前面所有控件的例子中,都采用了线性布局,而且控件都是在垂直方向上线性排列。那么有没有可能在水平方向上也可以进行线性排列呢?答案是肯定的。为什么在之前的例子中,所有的控件都是在垂直方向上线性排列呢?这是由于通过android:orientation属性指定了排列的方向是vertical,如果将属性值修改为horizontal,所有的控件就会在水平方向上线性排列。

按照惯例,通过一个实例体会线性布局的使用方法。修改“activity_main.xml”文件的代码如下:

这里通过“android:orientation="vertical"”声明了线性布局以垂直方式线性排列,然后添加了4个不同背景颜色的TextView,所有TextView的宽度都指定了match_parent,高度都指定了wrap_content。运行程序,效果如图5-13所示。

接下来将垂直方向的线性布局修改成水平方向的线性布局。修改“activity_main.xml” 文件中LinearLayout的排列方向,代码如下:

线性布局中的android:orientation属性值指定为horizontal,也就是线性布局里的控件被指定为水平方向排列。另外,把所有TextView的宽度指定为wrap_content。现在重新运行程序,效果如图5-14所示。

可以发现,在将线性布局的排列方向修改成水平方向的同时,将TextView的宽度指定为wrap_content,如果不修改会出现什么情况呢?尝试在代码中将所有的4个TextView的宽度指定为match_parent,然后运行程序,效果如图5-15所示。

从图5-15中可以发现,第一个TextView就将整个水平方向填满了,其他控件根本没有可放置的位置,所以当LinearLayout的排列方向是水平方向时,内部控件的宽度绝对不能指定为match_parent。同理,当LinearLayout的排列方向是垂直方向时,内部控件的高度绝对不能指定为match_parent。

图5-13 垂直方向的线性布局

图5-14 水平方向的线性布局

接下来分别介绍一下LinearLayout的另外两个关键属性:android:layout_gravity、android:layout_weight。

首先介绍android:layout_gravity属性,它与前面介绍过的常见控件里的android:gravity属性看起来有些相似。区别之处就在于android:gravity用来指定文本在控件中的对齐方式,而android:layout_gravity用来指定控件在布局中的对齐方式。两个属性在可选值方面也非常相似。但需要注意的是,当LinearLayout的排列方向是“horizontal”(水平)时,只有垂直方向上的对齐方式生效,同理,当LinearLayout的排列方向是“vertical”(垂直)时,只有水平方向上的对齐方式生效。

下面通过实例了解具体的使用方法。修改“activity_main.xml”文件的代码如下:(www.xing528.com)

当前LinearLayout的排列方向是“horizontal”,因此需要指定垂直方向上的排列方向才能生效,所以将第一个TextView的对齐方式指定为top,将第二个TextView的对齐方式指定为center_vertical,将第三个TextView的对齐方式指定为bottom。重新运行程序,效果如图5-16所示。

接下来介绍android:layout_weight属性。这是一个全新的属性,用于给一个线性布局中的诸多控件的重要度赋值,所有控件都有一个android:layout_weight值,默认为0,意思是需要显示多大的控件就占据多大的屏幕空间。若赋一个大于0的值,则将父控件中的可用空间分割,具体分割大小取决于每个控件的layout_weight值以及该值在当前屏幕布局的整体layout_weight值和其他控件屏幕布局的layout_weight值中所占的比例。

图5-15 另一种水平方向的线性布局

图5-16 线性布局的android:layout_gravity属性的使用效果

假设现在开发一款弹幕软件,所以至少需要一个文本编辑框和一个发送按钮,修改“activity_main.xml”文件的代码如下:

重新运行程序,效果如图5-17所示。

图5-17 线性布局的android:layout_weight属性的使用效果

R5-7 LinearLayout(线性布局)实例

在这个布局文件里,android:layout_width属性不生效了,就算把它指定为0,文本编辑框和按钮一样展示出来了。这是因为当使用了android:layout_weight属性后,这个属性的优先级要高于android:layout_width属性,而将android:layout_width指定为0也是比较规范的一种写法。另外,将文本编辑框和按钮的android:layout_weight属性都指定为1,这表示EditText和Button将会平分水平方向的宽度。从图5-17中也可以看到,两个控件分别占据屏幕宽度的一半。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈