Android |(五)基础布局Layout

目录

一、 LinearLayout(线性布局)

二、 RelativeLayout(相对布局)

三、 FrameLayout(帧布局)

四、 Constraint Layout(约束布局)

五、Table Layout(表格布局)

1.常用属性

2.使用实例

六、Absolute Layout(绝对布局)

演示:登录注册界面


        在Android开发中,布局(res-->layout)是一种定义用户界面(UI)的XML文件,它作为视图对象(View)和视图组(ViewGroup)的容器,用来确定应用界面的结构。 

☛ ☛☛布局是一个ViewGroup,理解其Parent与child的关系

通用属性

属性    

描述
layout_width
layout_height
  自身的尺寸:固定像素值 / wrap_content(自适应子视图的大小)/ match_parent(匹配父容器的大小)
background背景色,16进制值  或   图片
id 唯一标识符(必须唯一),用于定位该控件,例如:@id/titletv
padding内边距
组合方式:padding_left、padding_right
margin 外边距
visibilityvisible:显示;invisible:不显示但是占用空间gone:不显示也不占用空间
focusable 是否可以获取焦点
  enabled是否启用该控件

一、 LinearLayout(线性布局)

orientation线性布局的方向:vertical(垂直)或horizontal(水平)
gravity内部的对齐方式  :center、left、right、top和bottom

组合方式:center|left、center|right、center|top、center|bottom

weight

3个水平的控件,权重若都为1,则平分总宽度

二、 RelativeLayout(相对布局)

      一种根据父容器和兄弟控件来确定位置的布局方式

alignParent根据父容器定位
属性和父容器
alignParentLeft / alignParentRight左边对齐 /  右边对齐
alignParentTop / alignParentBottom顶部对齐 / 底部对齐
根据兄弟控件定位
属性和兄弟控件
aligntLeft / alignRight左边对齐 / 右边对齐
alignTop / alignBottom顶部对齐 /底部对齐
below  / above    下方 / 上方
toLeftOf  / toRightOf 左侧 / 右侧
center属性描述
centerHorizontal水平居中
centerVertical垂直居中
centerInParent水平垂直居中(中间)

三、 FrameLayout(帧布局)

     多个视图按照添加顺序堆叠,后面覆盖前面。适用于层叠显示场景,例如对话框、菜单等。

foreground

在FrameLayout的内容之上绘制一个可绘制的对象(如图片、颜色)

这常用于在内容上方添加一个遮罩层或装饰层。

foregroundGravity

定义了由foreground属性指定的前景内容的对齐方式。

其可选值与layout_gravity相似,用于控制前景内容在FrameLayout中的布局位置。

measureAllChildren

布尔类型,为true时,即使子视图在最终布局中会被其他视图覆盖,FrameLayout也会测量所有子视图的大小。

四、 Constraint Layout(约束布局)

       Android Studio推荐的现代布局方式,它凭借强大的约束条件功能,能够精确地定义控件的位置和大小,轻松构建复杂的界面结构。其高效性和灵活性使得布局嵌套大幅减少,从而提升了界面性能。

layout_constraintLeft_toLeftOf:使当前控件的左边缘与指定控件的左边缘对齐。
layout_constraintRight_toRightOf:使当前控件的右边缘与指定控件的右边缘对齐。
layout_constraintTop_toTopOf:使当前控件的上边缘与指定控件的上边缘对齐。
layout_constraintBottom_toBottomOf:使当前控件的下边缘与指定控件的下边缘对齐。
layout_constraintBaseline_toBaselineOf:使当前控件的基线与指定控件的基线对齐。

layout_constraintHorizontal_bias:控制水平方向上控件的偏移量,值域为0~1,表示当前控件在其约束范围内的水平位置百分比。
layout_constraintVertical_bias:控制垂直方向上控件的偏移量,值域为0~1,表示当前控件在其约束范围内的垂直位置百分比。

五、Table Layout(表格布局)

现代Android开发很少使用

TableLayout  |  Android Developers

和 GridLayout(网格布局) 的区别:
 GridLayout 只能制定每一列宽度一样的表格布局,

 TableLayout 能够制定各列宽度不一样的表格布局

1.常用属性

属性功能备注
layout_width默认fill_parent的,自定义不会生效
layout_height默认wrap_content的,可以自定义
collapseColumns隐藏/折叠列
  • 列号从0开始:shrinkColunmns = "2",对应是第3列
  • 可以设置多个,用逗号隔开:"0,2",如果是所有列都生效,则用"*"号即可
shrinkColumns收缩列
stretchColumns拉伸列
layout_column跳格子

android:layout_column="2":

表示的跳过第二个,直接显示到第三个格子处,从1开始算的!

layout_span合并

android:layout_span="4":

表示合并4个单元格,也就说这个组件占4个单元格

注意:

  • 整个表格布局的宽度取决于父容器的宽度(占满父容器本身)
  • 直接向TableLayout中添加组件的话,那么这个组件将占满一行
  • 一行多控件:TableRow容器,组件个数就决定了该行有多少列,而列的宽度由该列中最宽的单元格决定

2.使用实例

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    tools:context=".learn_layout.TableActivity">

    <TableLayout
        android:layout_width="fill_parent"
        android:layout_height="300dp"
        android:layout_marginHorizontal="12dp"
        android:background="#A0DF56"
        android:gravity="center"
        android:stretchColumns="1">
        <!--第一行-->
        <TableRow>
            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="(1,1)" /> 
          …………
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:background="@drawable/shape_15"
                android:text="(1.5)" />
        </TableRow>
        <!--第二行-->
        <TableRow>
       …………
        </TableRow>
    </TableLayout>
</RelativeLayout>

六、Absolute Layout(绝对布局)

        绝对布局简单,但因其多端兼容性差,使用的地方很少,所以只需要了解即可。

layout_x / layout_y组件的X坐标 / 组件的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"
    android:orientation="vertical">
    
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_x="40dp"
        android:layout_y="350dp"
        android:text="账号: "
        android:textSize="30sp" />

    <EditText
        android:layout_width="250dp"
        android:layout_height="50dp"
        android:layout_x="110dp"
        android:layout_y="350dp" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_x="40dp"
        android:layout_y="420dp"
        android:text="密码: "
        android:textSize="30sp" />

    <EditText
        android:layout_width="250dp"
        android:layout_height="50dp"
        android:layout_x="110dp"
        android:layout_y="420dp" />

    <Button
        android:layout_width="150dp"
        android:layout_height="50dp"
        android:layout_x="40dp"
        android:layout_y="500dp"
        android:text="登录" />

    <Button
        android:layout_width="150dp"
        android:layout_height="50dp"
        android:layout_x="210dp"
        android:layout_y="500dp"
        android:text="注册" />

</AbsoluteLayout>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值