Android学习1

布局

布局是安卓应用程序的界面定义
布局中的所有界面元素都是视图对象或者视图组对象
一个布局首先是一个视图对象,然后在视图组对象中添加子视图组对象或者视图对象

在每个应用程序创建时都会默认包含一个主界面布局,这个布局文件在app/res/layout中。

常见的页面布局分为:线性布局约束布局帧布局表格布局

线性布局

LinearLayout 主要以水平或垂直方式来显示界面中的控件。水平方向排列时,显示顺序依次为从左到右;垂直方向排列时,显示顺序是从上到下。
线性布局中每行或者每列只能有一个子视图或者控件。

主要属性
android:orientation=“horizontal” 水平方向,只能沿着水平方向摆控件,一列只能有一个控件;
android:orientation="vertical"垂直方向,只能沿着垂直方向摆控件,一行只能有一个控件;
android:background:设置控件背景颜色
android:gravity:设置view中内容相对于view组件的对齐方式
android:layout_gravity:设置view相对于父容器的位置
android: id:设置控件的id,可以通过findViewByld方法调用。
android:layout_weight设置内部控件在linearlayout中所占的权重,如果不设置,默认为0
warp_content:根据容器的内容决定组件的大小
match_parent: 和父容器大小一致

当设置权重之后,在水平方向排列,应该设置layout_width=“0dp”;垂直排列应该设置layout_height=“0dp”。
这里涉及到一个剩余空间的概念,例如在水平排列的情况下有三个文本框,里面文本内容分别是A、B、C,它们的权重分别是1、2、3;如果三个文本框layout_width=“warp_content”,那么系统会先分配他们的宽度值,这个宽度值足以包含他们的内容A、B、C即可,然后回把剩下的空间按照1:2:3的比例分别分配给A、B、C三个文本框。
如果layout_width=“match_parent”,三个文本框所占空间与权重成反比。首先系统会先给三个文本框分配他们所要的宽度值=match_parent,他们的宽度都是和父容器的宽度是一样的。那么剩余空间=parent_width - 3parent_width = - 2 parent_width
第一个文本框A实际所占宽度 = parent_width + 它所占空间权重1/6 * 剩余空间大小(-2parent_width)= 2/3parent_width
第二个文本框B实际所占宽度 = parent_width + 它所占空间权重 2/6 * 剩余空间大小(-2parent_width) = 1/3parent_width
第三个文本框B实际所占宽度 = parent_width + 它所占空间权重 3/6 * 剩余空间大小(-2parent_width) = 0parent_width 第三个文本框直接就不显示了。
设置layout_width="0dp"后,每个文本框实际占用空间则按照它的权重比来分配

相对布局

RelativeLayout,显示特点和线性布局相似。

基本属性
layout_toRightOf:在指定控件的右边
layout_toLeftOf:在指定控件左边
layout_above:在指定控件上边
layout_below:在指定控件下边

layout_alignRight:与指定控件右对齐
layout_alignLeft:与指定控件左对齐
layout_alignTop:与指定控件顶部对齐
layout_alignBottom:与指定控件底部对齐

android:alignParentBottom:若该值为true,则控件的底部和父控件的底部对齐
android:layout_alignParentLeft :若该值为true,则将该控件的左边与父控件的左边对齐
android:layout_alignParentRight :若该值为true,则将该控件的右边与父控件的右边对齐
android:layout_alignParentTop :若该值为true,则将空间的顶部与父控件的顶部对齐

约束布局

ConstraintLayout是一个ViewGroup,可以在Api9以上的Android系统使用它,它的出现主要是为了解决布局嵌套过多的问题,以灵活的方式定位和调整小部件。

主要属性
layout_constraintLeft_toLeftOf
layout_constraintLeft_toRightOf:
layout_constraintRight_toLeftOf
layout_constraintRight_toRightOf
layout_constraintTop_toTopOf
layout_constraintTop_toBottomOf
layout_constraintBottom_toTopOf
layout_constraintBottom_toBottomOf
layout_constraintBaseline_toBaselineOf
layout_constraintStart_toEndOf
layout_constraintStart_toStartOf
layout_constraintEnd_toStartOf
layout_constraintEnd_toEndO
基本用法就是哪条边和哪条边对齐。

帧布局

FrameLayout帧布局是一种特殊的布局,它以层叠的方式显示布局中的多个控件。

主要属性
android:layout_gravity:设置view相对于父容器的位置
android:visibility:visible可见、invisible不可见
在使用过程中,可以通过setvisibility方法设置属性,可以设置为View.VISIABLE可见,显示到页面;View.INVISIABLE不可见,但是也占用位置;View.GONE隐藏,不可见且不占用位置。

表格布局

TableLayout表格布局,是以表格形式来排列控件的,通过行和列将界面划分为多个单元格,每个单元格可以添加控件,表格布局需要和TableRow配合使用,每行都是由TableRow对象组成,TableRow的数量决定表格的行数,表格列数是由包含最多控件的TableRow决定的。例如第一个TableRow有2个控件,第二个TableRow有4个控件,那么表格的列数为4.

主要属性
android:stretchColumns:设置该列被拉伸
android:shrinkColumns:设置该列被收缩
android:collapseColumns:设置该列被隐藏
android:layout_Columns:设置单元格显示的位置,从0开始
android:layout_sapn:设置该单元格占据几列,默认为1列

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值