Android基础入门2

0 阅读3分钟

布局资源有四种常用类型

布局的通用属性:

  • android:id 设置当前布局的唯一标识
  • android:layout_width 设置当前布局的宽度
  • android:layout_height 设置当前布局的高度
  • android:background 设置当前布局的背景
  • android:layout_margin 设置当前布局与屏幕边界、周围布局和控件的距离
  • android:padding 设置当前布局与该布局中控件的距离

线性布局(LinearLayout)

在xml布局文件中定义LinearLayout的基本语法格式如下:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              属性 ="属性值"
              ······>
</LinearLayout>

1. android:orientation

用于设置LinearLayout内控件的排列顺序,可选值vertical and horizontal。 vertical:控件从上到下依次垂直排列 horizontal:控件从左到右依次水平排列

2. android:layout_weight

该属性表示权重,通过该属性值,可使布局内的控件按照权重比显示大小。

屏幕截图 2026-03-24 214733.png 从图片可以看出,三个按钮呈现水平方式排列,并且宽度在水平方向上的权重比为1:1:2。

相对布局(RelativeLayout)

通过相对定位的方式指定子控件的相对位置。在xml布局文件中定义RelativeLayout的基本语法格式如下:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
              属性 ="属性值"
              ······>
</RelativeLayout>
  • 在早期 Android 开发中,RelativeLayout 常被用来替代多层嵌套的 LinearLayout,从而减少视图层级,提高绘制效率。
  • 如今官方更推荐使用 ConstraintLayout,因为它提供了更强大的约束系统、更扁平的结构,且与可视化编辑器结合更好。

屏幕截图 2026-03-24 215034.png 从图片可以看出,三个按钮并不是简单地上下或左右排列,而是呈现出一种“相对定位”的效果——例如先定义按钮1在底部靠左的位置,按钮2相对于1在上面靠右一点的距离。同理按钮3也一样。

表格布局(TableLayout)

通过在表格中添加TableRow布局或控件来控制表格的行数,在TableRow布局中添加控件来控制表格列数。在xml布局文件中定义TableLayout的基本语法格式如下:

<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
              属性 ="属性值">
    <TableRow>
        UI控件
        ······
    </TableRow>    
</TableLayout>

屏幕截图 2026-03-25 165105.png

从图片可以看出,这是一个3行3列的表格,5个按钮按照这种形式进行排列。先通过android:stretchColumns属性设置TableLayout的第3列可拉伸,button控件通过android:layout_column属性指定当前控件位于第几列。

帧布局(FrameLayout)

帧布局用于在屏幕上创建一块空白区域,放置到该区域中的每个子控件占一帧,这些帧会一个一个地叠加在一起,后放置的控件会叠加在先放置的控件上层。在xml布局文件中定义FrameLayout的基本语法格式如下:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
              属性 ="属性值">
 
</FrameLayout>

有两个特殊属性:

  • android:foreground 设置FrameLayout容器的前景图像
  • android:foregroundGravity 设置前景图像显示的位置

屏幕截图 2026-03-25 170935.png 从图片中可以看出,这是个霓虹灯界面,就是设置5个Button控件分别用于显示5个按钮,设置适合的宽度和高度,然后背景设置不同颜色就成了。