安卓开发---02 Android布局

  • FrameLayout(帧布局)
  • LinearLayout(线性布局)
  • GridLayout(网格布局)
  • RelativeLayout(相对布局) 用的较少
  • AbsoluteLayout(绝对布局)
  • TableLayout(表格布局) 基本不用

1. 帧布局FrameLayout
帧布局是Android布局中最简单的一种,使用FrameLayout标签。
帧布局为每个加入其中的控件创建一个空白区域(称为一帧,每个控件占据一 帧)。釆用帧布局方式设计界面时,只能在屏幕左上角显示一个控件,如果添加多个控件,这些控件会按照顺序在屏幕的左上角重叠显示。

例子:使用帧布局添加不同大小的TextView,给不同的背景颜色看效果。
#ff33ffff  #ff33ccff   #ff3399ff   #ff3366ff   #ff3300ff
Layout_gravity

2.线性布局LinearLayout(解释权重)
四个极其重要的参数,直接决定元素的布局和位置

android:layout_gravity 本元素相对于父元素的重力方向
android:gravity 本元素所有子元素的重力方向
android:orientation 线性布局以列或行来显示内部子元素V H
android:layout_weight 子元素对未占用空间水平或垂直分配权重值

当 android:orientation="vertical"  时, 只有水平方向的设置才起作用,垂直方向的设置不起作用。即:left,right,center_horizontal 是生效的。
当 android:orientation="horizontal" 时, 只有垂直方向的设置才起作用,水平方向的设置不起作用。即:top,bottom,center_vertical 是生效的。

android:layout_gravity 和 android:gravity 的区别

android:gravity对元素本身起作用-本身元素显示在什么位置
android:layout_gravity相对与它的父元素-元素显示在父元素的什么位置。
如:Button控件
android:layout_gravity 表示button在界面上的位置
android:gravity表示button上的字在button上的位置。
可选值[多选时用“|”分开] 
top、bottom、left、right、center_vertical、fill_vertical、center_horizontal、fill_horizontal、center、fill、clip_vertical。

3.网格布局GridLayout
GridLayout是Android4.0引入的网格布局,使用它可以减少布局嵌套。
GridLayout 使用属性:

android:columnCount	最大列数
android:rowCount	最大行数
android:orientation	GridLayout中子元素的布局方向

item属性:

android:layout_column	指定该单元格在第几列显示
android:layout_row	指定该单元格在第几行显示
android:layout_columnSpan	指定该单元格占据的列数
android:layout_rowSpan	指定该单元格占据的行数
android:layout_gravity	指定该单元格在容器中的位置
android:layout_columnWeight	(API21加入)列权重
android:layout_rowWeight	(API21加入) 行权重

4. 相对布局RelativeLayout

当界面比较复杂的时候,需要嵌套多层的 LinearLayout,这样就会降低UI Render的效率(渲染速度),而且如果是listview或者GridView上的 item,效率会更低,另外太多层LinearLayout嵌套会占用更多的系统资源,还有可能引发stackoverflow; 但是如果我们使用RelativeLayout的话,可能仅仅需要一层就可以完成了,以父容器或者兄弟组件参考+margin +padding就可以设置组件的显示位置。

第一类:属性值为true或false

android:layout_centerHorizontal              水平居中
android:layout_centerVertical                垂直居中
android:layout_centerInparent                相对于父元素完全居中
android:layout_alignParentBottom             贴紧父元素的下边缘
android:layout_alignParentLeft               贴紧父元素的左边缘
android:layout_alignParentRight              贴紧父元素的右边缘
android:layout_alignParentTop                贴紧父元素的上边缘
android:layout_alignWithParentIfMissing      如果对应的兄弟元素找不到的话就以父元素做参照物
android:layout_centerInParent="true"         相对父控件居中

第二类:属性值必须为id的引用名“@id/id-name” tv

android:layout_below   =‘@+id/XXX’           在某元素的下方   
android:layout_above                         在某元素的的上方
android:layout_toLeftOf                      在某元素的左边
android:layout_toRightOf                     在某元素的右边
android:layout_alignTop                本元素的上边缘和某元素的的上边缘对齐
android:layout_alignLeft               本元素的左边缘和某元素的的左边缘对齐
android:layout_alignBottom             本元素的下边缘和某元素的的下边缘对齐
android:layout_alignRight              本元素的右边缘和某元素的的右边缘对齐

例:<!-- 这个是在容器中央的 -->    
    <ImageView    
        android:id="@+id/img1"     
        android:layout_width="80dp"    
        android:layout_height="80dp"    
        android:layout_centerInParent="true"  //相对父控件居中
        android:src="@drawable/pic1"/>    
        
    <!-- 在中间图片的左边 -->    
    <ImageView    
        android:id="@+id/img2"     
        android:layout_width="80dp"    
        android:layout_height="80dp"    
        android:layout_toLeftOf="@id/img1"   //在img1元素的左边
        android:layout_centerVertical="true"    //垂直居中
        android:src="@drawable/pic2"/>   

5.绝对布局
layout_x:指定该子组件的X坐标。
layout_y:指定该子组件的Y坐标。

发布了11 篇原创文章 · 获赞 9 · 访问量 622

猜你喜欢

转载自blog.csdn.net/qq_44534541/article/details/105398894