Android五大UI布局的特有属性

原创 2017年01月02日 21:41:06

Android五大UI布局

1.  LinearLayout   线性布局
2.  RelativeLayout  相对布局
3.  FrameLayout   帧布局,空白布局
4.  GridLayout    网格布局
5.  AbsoluteLayout   绝对布局

一、线性布局LinearLayout

框架结构如下

这里写图片描述

独有属性:

1、排列方向:vertical  竖向,horizontal 横向 如:android:orientation="vertical"

2、 设置当前控件在父控件范围内所处的位置(如居中,右下角等特殊位置) 如 :android:layout_gravity

此属性存在一个bug:
(1)当orientation为vertical时,那么所有跟高度相关的属性值都会失效.

(2)当orientation为Horizontal时,那么所有跟宽度相关的属性值都会失效.
  • 原因:(以vertical方向为例)支持无限摆放子控件,顶多超出指定宽高区域范围的不显示,但是也不会报错。因此,依据此特点,无法确定线性的高具体是多少。bottom以及center_vertical等有关高度的属性都需要根据高度进行计算。 高度无法确定,因此,所有跟高度相关的属性值均会失效。(Horizontal方向原因与上面的原因类似)。

  • 使用样例

这里写图片描述

使用效果如下:

这里写图片描述

  • 由以上效果可知:LinearLayout为垂直方向(android:orientation=”vertical”)所以代码 android:layout_gravity=”bottom”并没有起到将文本放到底部的作用,即垂直方向上不起作用。而水平方向上却向左移动了40dp的距离

  • 3、设置权重,即设置兄弟控件之间宽或高的比例关系。当使用此属性值,如果是给宽度设置比例关系,那么将layout_width的属性值设置为0dp或wrap_content。如果是给高度设置比例关系,那么layout_weight的属性值设置为0dp或wrap_content。

  • 使用时注意:如果是horizontal方向的线性布局,那么使用weight属性控制宽度的比例关系,如果是vertical方向的线性布局,那么使用weight属性控制高度的比例关系.

  • android:weightSum 此属性只能写在Linearlayout标签中,用于设置比例关系几分之几中的分母可省略不写,如果不写的话,那么分母由所有layout_weight属性的和决定

  • 使用样例:

这里写图片描述

使用效果:

这里写图片描述

由效果图可知两个文本框的比例在水平方向上为1:3

二、相对布局RelativeLayout

框架结构如下:

这里写图片描述

特点 :

1.  每一个控件默认位置是位于左上角
2.  当想要给控件设置位置时,此位置必然是参照父控件区域或者兄弟控件调整位置的

相对于父控件的属性:

以下所有属性的属性值设置的均为:true或者falsefalse与没写此属性效果相同

控制居中的:
android:layout_centerInParent   水平,垂直同时居中
android:layout_centerHorizontal  水平居中
android:layout_centerVertical   垂直居中

控制贴边的:
android:layout_alignParentLeft  让当前控件的左边缘紧贴父控件的左边缘
android:layout_alignParentTop   让当前控件的顶边缘紧贴父控件的顶边缘
android:layout_alignParentRight 让当前控件的右边缘紧贴父控件的右边缘
android:layout_alignParentBottom让当前控件的底边缘紧贴父控件的底边缘

三、帧布局 FrameLayout

特点:

1.  所有控件的默认位置都是左上角,想要控制控件的显示位置,只能用layout_gravity属性控制
2.  通常配合Fragment使用

四、绝对布局 AbsoluteLayout

  • 绝对布局(目前此布局基本被废弃)

特点:

在设置控件的显示位置时,只需通过属性设置控件左上角的坐标点即可

五、网格布局GridLayout

框架结构如下:

这里写图片描述

网格布局 4.0以后出的, 4.0以前的网格布局使用TableLayout

特点:

1.  整体的页面会按要求分为n行n列的网格,可以将控件直接放置在指定的行和列中
2.  网格也可以实现跨行或跨列显示,如一个网格的高度可以直接占据两行的高度
3.  可以省略layout_width和layout_height属性

独有属性:

android:rowCount="4"  指定总行数
android:columnCount="4"  指定总列数

指定控件位于网格的第几行第几列中
 android:layout_row="0"
 android:layout_column="0"
 android:layout_rowSpan="2"  将控件的高度拉伸为2行的高度
 android:layout_columnSpan="2"   将控件的宽度拉伸为2列的宽度
 注意: 以上两个拉伸的属性必须配合android:layout_gravity="fill"才能生效
<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" 
    android:rowCount="4"
    android:columnCount="4"
    >

    <TextView
        android:layout_width="50dp"
        android:layout_height="50dp"
        android:text="1"
        android:background="#ff0000"
        android:layout_row="0"
        android:layout_column="0"
        />
     <TextView
        android:layout_width="50dp"
        android:layout_height="50dp"
        android:text="1"
        android:background="#ff0000"
        android:layout_row="0"
        android:layout_column="1"
        />
    <TextView
          android:layout_width="50dp"
        android:layout_height="50dp"
        android:text="2"
        android:background="#00ff00"
        android:layout_row="1"
        android:layout_column="0"
        android:layout_columnSpan="2"
        android:layout_gravity="fill"
        />

    <TextView
        android:layout_width="50dp"
        android:layout_height="wrap_content"
        android:text="3"
        android:background="#0000ff"
        android:layout_row="0"
        android:layout_column="2"
        android:layout_rowSpan="2"
        android:layout_gravity="fill"
        />
</GridLayout>

效果如下:

这里写图片描述

版权声明:本文为博主原创文章,未经博主允许不得转载。

Android开发学习之路--UI之基本布局

上一篇文章中主要介绍了ui的控件,这里就学习下布局吧。android的基本布局在layout下主要如图:     从上图可以看出有FrameLayout(单帧布局),LinearLayout(线性...
  • eastmoon502136
  • eastmoon502136
  • 2016年02月06日 13:58
  • 3689

Android UI之五种基本布局详解

Android布局是应用界面开发的重要一环,在Android中,共有五种布局方式,分别是: LinearLayout (线性布局) RelativeLayout(相对布局) FrameLayout(...
  • FLY346422332
  • FLY346422332
  • 2017年03月09日 15:52
  • 397

Android UI基础——五大布局

一个丰富的界面是由很多个控件组成的,如何让各个控件都有条不紊的摆放在介面上,这就需要布局来实现了,布局可以说是一种容器,可以按照一定规律调整控件的位置,布局之内也可以放置布局,完成一些复杂的界面。常用...
  • sinat_21102069
  • sinat_21102069
  • 2016年03月26日 22:06
  • 879

Android基础————UI布局之高级控件详解

UI高级控件: (1)SeekBar:可以拖动的进度条 (2)ProgressBar: 常用属性: style: style="?android:attr/progressBarStyle"默认的进度...
  • u012369385
  • u012369385
  • 2016年09月04日 16:14
  • 1451

Android UI布局与控件(二)

一、View类的常用xml属性:【了解】 ①.Android中所有的UI(用户界面)元素都是使用View和ViewGroup对象建立的 ②.View是一个可以将一些信息绘制...
  • wuqingyidongren
  • wuqingyidongren
  • 2016年05月23日 11:28
  • 4002

Android开发学习之路--UI之自定义布局和控件

新的一年已经开始了,今天已经是初二了,两天没有学习了,还是要来继续学习下。一般手机的title都是actionbar,就像iphone一样可以后退,可以编辑。这里自定义布局就来实现下这个功能,首先准备...
  • eastmoon502136
  • eastmoon502136
  • 2016年02月09日 16:18
  • 4191

Android UI之五种基本布局详解

Android布局是应用界面开发的重要一环,在Android中,共有五种布局方式,分别是: LinearLayout (线性布局) RelativeLayout(相对布局) FrameLayout(...
  • FLY346422332
  • FLY346422332
  • 2017年03月09日 15:52
  • 397

Android UI基础——五大布局

一个丰富的界面是由很多个控件组成的,如何让各个控件都有条不紊的摆放在介面上,这就需要布局来实现了,布局可以说是一种容器,可以按照一定规律调整控件的位置,布局之内也可以放置布局,完成一些复杂的界面。常用...
  • sinat_21102069
  • sinat_21102069
  • 2016年03月26日 22:06
  • 879

【Android】UI设计之界面布局

前言     Android从1.0发展到现在的Android6.0已经有将近8年时间了,在这个过程中,它增加得不止是版本上的数字,其UI的颜值也是在逐年上升的,越来越好看了。在Android应用...
  • Gnd15732625435
  • Gnd15732625435
  • 2016年06月05日 19:56
  • 1553

Android layout布局属性、标签属性总结大全

RelativeLayout 第一类:属性值为true可false android:layout_centerHrizontal        水平居中 android:layout...
  • Breeze2003
  • Breeze2003
  • 2014年04月15日 16:39
  • 8302
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android五大UI布局的特有属性
举报原因:
原因补充:

(最多只允许输入30个字)