2.五种常用布局

五种常用布局

文章目录

1.线性布局

线性布局(LinearLayout)主要以水平或垂直方式来显示界面中的控件。当控件水平排列时,显示顺序依次为从左到右,当控件垂直排列时,显示顺序依次为从上到下。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" >
    
<!--orientation 方向-->
    
<!-- 注意:当控件使用weight权重属性时,布局宽度属性值通常设置为0。 -->
    <Button android:layout_width="wrap_content" android:layout_height="0dp" android:layout_weight="1" android:text="按钮一" />

    <Button android:layout_width="wrap_content" android:layout_height="0dp" android:layout_weight="1" android:text="按钮二" />

</LinearLayout>
  • 当控件水平排列时,控件属性layout_width只能设置为wrap_content(包裹内容让当前控件根据控件内容大小自动伸缩),否则其余控件会被挤出屏幕右侧不显示。同理,如果控件垂直排列也会出现同样情况。
  • 当控件水平排列时,如果控件未占满一行,会留有空白区域,这样既不美观又浪费空间。此时,可以利用layout_weight属性解决这个问题,该属性被称为权重,通过比例调整布局中所有控件的大小。

2.相对布局

相对布局(RelativeLayout)是通过相对定位的方式指定控件位置,即以其它控件或父容器为参照物,摆放控件位置。在设计相对布局时要遵循控件之间的依赖关系,后放入控件的位置依赖于先放入的控件。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="20dp">
       ……..
</RelativeLayout>

控件位置属性

android:layout_centerInParent设置当前控件位于父布局的中央位置
android:layout_centerVertical设置当前控件位于父布局的垂直居中位置
android:layout_centerHorizontal设置当前控件位于父控件的水平居中位置
android:layout_above设置当前控件位于某控件上方
android:layout_below设置当前控件位于某控件下方
android:layout_toLeftOf设置当前控件位于某控件左侧
android:layout_toRightOf设置当前控件位于某控件右侧
android:layout_alignParentTop设置当前控件停靠于布局顶端(默认)
android:layout_alignParentLeft设置当前控件停靠于布局左侧(默认)
android:layout_alignParentRight设置当前控件停靠于布局右侧
android:layout_alignParentBottom设置当前控件停靠于布局底端
android:layout_alignTop设置当前控件的上边界与某控件的上边界对齐
android:layout_alignBottom设置当前控件的下边界与某控件的下边界对齐
android:layout_alignLeft设置当前控件的左边界与某控件的左边界对齐
android:layout_alignRight设置当前控件的右边界与某控件的右边界对齐
android:layout_marginTop设置当前控件上边界与某控件的距离
android:layout_marginBottom设置当前控件底边界与某控件的距离
android:layout_marginLeft设置当前控件左边界与某控件的距离
android:layout_marginRight设置当前控件右边界与某控件的距离
android:paddingTop设置布局顶部内边距的距离
android:paddingBottom设置布局底部内边距的距离
android:paddingLeft设置布局左边内边距的距离
android:paddingRight设置布局右边内边距的距离
android:padding设置布局四周内边距的距离

补充属性

android:layout_gravity和android:gravity属性的区别

gravity的中文意思就是”重心“,就是表示view横向和纵向的停靠位置

(1).android:gravity:是对view控件本身来说的,是用来设置view本身的内容应该显示在view的什么位置,默认值是左侧。也可以用来设置布局中的控件位置

(2).android:layout_gravity:是相对于包含改元素的父元素来说的,设置该元素在父元素的什么位置;

比如TextView: android:layout_gravity表示TextView在界面上的位置,android:gravity表示TextView文本在TextView的什么位置,默认值是左侧.

android:gravity : 表示当前View,即**控件,内部的东西的,对齐****方式。

android:layout_gravity: 表示当前View,即控件本身在父一级内的(即父一级控件所给当前子控件所分配的显示范围内)的对齐方式

常用单位

为了让程序拥有更好的屏幕适配能力,在指定控件和布局宽高时应尽量避免将控件宽高设置为固定值。但特殊情况下,需要使用指定宽高值时,可以选择使用以下四种单位:

px:像素,即在屏幕中可以显示最小元素单位。

pt:磅数,一磅等于1/72英寸,一般pt会作为字体的单位来显示。

dp:基于屏幕密度的抽象单位。不同设备有不同的显示效果,根据设备分辨率的不同来确定控件的尺寸。

sp:可伸缩像素,采用与dp相同的设计理念,推荐设置文字大小时使用。

3.帧布局

帧布局(FrameLayout)为每个加入其中的控件创建一个空白区域(称为一帧,每个控件占据一帧)。

所有控件都默认显示在屏幕左上角,按照先后放入的顺序重叠摆放。帧布局的大小由内部最大控件的决定。

    <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" >
    </FrameLayout>

4.表格布局

表格布局(TableLayout)是以表格形式排列控件的,通过行和列将界面划分为多个单元格,每个单元格都可以添加控件。

表格布局需要和TableRow配合使用,每一行都由TableRow对象组成,因此TableRow的数量决定表格的行数。而表格的列数是由包含最多控件的TableRow决定的,例如第1个TableRow有两个控件,第2个TableRow有三个控件,则表格列数为3。

    <TableLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content" android:stretchColumns="2">
        <TableRow>
            <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_column="0" android:text="按钮1" />
        </TableRow>
    </TableLayout>

5.绝对布局

绝对布局(AbsoluteLayout)是通过指定x、y坐标来控制每一个控件位置的。

     <AbsoluteLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent">
         <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_x="50dp" android:layout_y="50dp" android:text="按钮1"/>
     </AbsoluteLayout>

    原文作者:DMr.Liu
    原文地址: https://blog.csdn.net/weixin_45932709/article/details/123965369
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞