当前位置: 代码迷 >> 综合 >> Android入门--UI开发--5种常见布局简介(FrameLayout,TableLayout,AbsouluteLayout)
  详细解决方案

Android入门--UI开发--5种常见布局简介(FrameLayout,TableLayout,AbsouluteLayout)

热度:100   发布时间:2023-11-30 18:05:11.0

前面我们介绍了LinearLayout(线性布局)和RelativeLayout(相对布局)

Android入门--UI开发--5种常见布局简介(LinearLayout篇)_将军府中来的博客-CSDN博客https://blog.csdn.net/qq_55985667/article/details/123452661?spm=1001.2014.3001.5501Android入门--UI开发--5种常见布局简介(RelativeLayout)_将军府中来的博客-CSDN博客??????https://blog.csdn.net/qq_55985667/article/details/123465178?spm=1001.2014.3001.5501由于剩下的这三种布局相较之下比较少用,这里我们也不浪费太大的篇幅,就一起简单概括。

  • 帧布局

帧布局(FrameLayout)是Android中最为简单的一种布局,该布局为每个加入其中的控件创建了 一个空白区域(成为一帧,每个控件占据一帧)。采用帧布局设计界面时,所有控件都默认显示在屏幕左上角,并按照先后放入的顺序重叠摆放,先放入的控件显示在最底层,后放入的显示在最顶层。帧布局类似于ps的图层,学习帧布局最好是要理解它的叠放顺序。帧布局由两个特殊属性,具体如下:

FrameLayout
布局属性 功能描述
android:foreground 设置帧布局容器的前景图像(始终在所有子控件之上
android:foregroundGravity 设置前景图像显示位置

下面我们通过代码块的学习来加深理解

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:foreground="@mipmap/ic_launcher"android:foregroundGravity="left"><Buttonandroid:layout_width="300dp"android:layout_height="450dp"android:background="@color/teal_200"android:text="按钮1" /><Buttonandroid:layout_width="200dp"android:layout_height="210dp"android:background="@color/black"android:text="按钮2" /></FrameLayout>

效果图:

从效果图可以看出,最先放入的"按钮1"位于最底层,后放入的按钮依次覆盖。前景图片是通过FrameLayout标签中的foreground属性设置的,并使用foregroundGravity属性设置图片居左。需要注意的是,前景图片始终保持在最上层(foreground属性导致)。

  •  表格布局

        表格布局(TableLayout)是以表格形式排列控件的,通过行和列将界面划分为多个单元格,每个单元格都可以添加控件。表格布局需要和TableRow配合使用,每一行都是由TableRow对象组成,因此TableRow的数量决定表格的行数。

        TableRow继承自LinerLayout类,除了继承了父亲的属性和方法,还包含了一些表格布局的特有属性:

TableLayout布局属性
布局属性 功能描述
android:stretchColunmns 设置该列被拉伸,列号从“0”开始。例如,android:stretchColunmns=“0”表示第1列拉伸
android:shrinkColunmns 设置该列被收缩,列号从“0”开始。例如,android:shrinkColunmns=“1,2”表示第2,3列可收缩
android:collapseColunmns 设置该列被隐藏,列号从“0”开始。例如,android:collapseColunmns=“0”表示第1列隐藏

接下来编写一个表格布局,并使用上述属性,具体代码如下:

<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="wrap_content"android:layout_height="wrap_content"android:stretchColumns="2">//第3列拉伸,索引一般从0开始,所以2索引到的位置其实是第3列<TableRow><Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_column="0"android:text="按钮1" /><Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_column="1"android:text="按钮2" /></TableRow><TableRow><Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_column="1"android:text="按钮3" /><Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_column="2"android:text="按钮4" /></TableRow><TableRow><Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_column="2"android:text="按钮5" /></TableRow></TableLayout>

 效果图:

      在上述代码中,设置了一个3行3列的表格布局,并通过stretchColunmns属性指定表格布局的第3列被拉伸(从下标0开始计算),通过layout_coulmn属性指定当前控件位于第几列。 

      需要注意的是,在TableRow标签中设置layout_width和layout_height属性是没有作用的,其宽度layout_width和高度layout_height会自动根据单元格控件决定的,所以通常会省略这两个属性。如果其他控件在TableRow标签外,会自成一行。

  • 绝对布局 

绝对布局(AbsouluteLayout) 是通过指定x,y坐标来控制每一个控件位置的。随着手机种类增多,屏幕分辨率千变万化,使用绝对对布局需要精确地计算控件大小,同时还要考虑手机屏幕尺寸和分辨率,在开发中这是非常低效的,因此不推荐使用。同时,在GoogleAPI中提示此类以弃用,所以此布局大家只需简单了解即可。下面介绍一下控件位置的两个属性:

AbsoluteLayout
布局属性 功能描述
android:layout_x 设置x坐标
android:layout_y 设置y坐标

接下来通过代码实操来讲解具体应用:

<?xml version="1.0" encoding="utf-8"?>
<AbsoluteLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"><Buttonandroid:layout_x="50dp"android:layout_y="50dp"android:text="按钮1"android:layout_width="wrap_content"android:layout_height="wrap_content"/><Buttonandroid:layout_x="200dp"android:layout_y="150dp"android:text="按钮2"android:layout_width="wrap_content"android:layout_height="wrap_content"/></AbsoluteLayout>

 可以看出,两个按钮都是以左上角为坐标原点,根据指定x,y准确地定位在屏幕中。

想了解控件单位的具体作用也可以参考我这篇文章。

Android--控件的单位(px,pt,dp,sp)_将军府中来的博客-CSDN博客https://blog.csdn.net/qq_55985667/article/details/123457615?spm=1001.2014.3001.5502

有关Android入门--UI开发--5种常见布局的介绍到此告一段落,后续我也会跟你们一样学习持续更新,一起努力加油!

  相关解决方案