安卓入门系列-04常见布局之LinearLayout(线性布局)

线性布局(LinearLayout)的使用

  • 背景
    • 尽管现在有了很多第三方封装的更加合适的布局定义。(各个地区随着人们的接受程度各不相同)但是作为官方提供的最先的几大布局,学习一下是必要的,因为很多布局都是在这些的基础上开发出来的。
    • 最基础的有六大布局,分别为LinearLayout(线性布局)、TableLayout(表格布局)、FrameLayout(帧布局)、RelativeLayout(相对布局)、GridLayout(网格布局)以及AbsoluteLayout(绝对布局)。在近年来,官方又主推了一种新的布局ConstraintLayout(约束布局)。
    • 首先接触的是开发中最常用最简单的布局之一—线性布局(linearlayout)。
  • 什么是线性布局
    • 线性布局由 LinearLayout类实现,它可以控制各组件横向或纵向排列。简单来说是向一个方向不断排列组件的布局。布局之间可以嵌套。
  • 常见属性
    • android:orientation
      • 这是最核心的属性,控制组件的排列方向,只有两个值 horizontal(水平排列)和vertical(垂直排列)。
      • 简单测试一下。(添加了三个按钮)
        •   <?xml version="1.0" encoding="utf-8"?>
            <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
                xmlns:app="http://schemas.android.com/apk/res-auto"
                xmlns:tools="http://schemas.android.com/tools"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                tools:context="com.zc.helloworld.MainActivity"
                android:orientation="vertical"
                >
            
                <Button
                    android:id="@+id/btn_01"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="I am Button"/>
                <Button
                    android:id="@+id/btn_02"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="I am Button"/>
                <Button
                    android:id="@+id/btn_03"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="I am Button"/>
            </LinearLayout>
          
      • 两种效果如下。
        • 水平
          • 安卓入门系列-04常见布局之LinearLayout(线性布局)
        • 垂直
          • 安卓入门系列-04常见布局之LinearLayout(线性布局)
    • android:gravity
      • 设置组件的对齐方式,影响范围是该布局内部的每一个组件。属性值可设为 top(顶部对齐) 、bottom(底部对齐) 、left(左对齐) 、right(右对齐) 、center_vertical(垂直方向居中) 、 fill_vertical(垂直方向填充) 、 center_horizontal(水平方向居中) 、 fill_horizontal(水平方向填充) 、center(垂直与水平方向都居中) 、 fill (填充)、  clip_vertical(垂直方向裁剪) 、  clip_horizontal(水平方向裁剪) 。

      • 可以多个属性串联用"|"隔开。

      • 在上面代码排列方向后添加一行。

        • android:gravity="center"
      • 效果如下。

        • 安卓入门系列-04常见布局之LinearLayout(线性布局)
    • android:baselineAligned
      • 该属性设为 false ,该布局管与它的子元素的基线对其会失效。
    • android:divider
      • 设置垂直布局时两个按钮直接的分隔条。
    • android:measureWithLargestChild
      • 该属性设为 true 时,所有带权重的子元素都会具有最大子元素的最小尺寸。
  • 子元素属性
    • android:layout_gravity
      • 指定该子元素在 LinearLayout 中的对其方式。
    • android:layout_weight
      • 指定该子元素在 LinearLayout 中所占的权重。