View与ViewGroup的概念
所有控件的父类View与ViewGroup类
在AndroidAPP中,所有的用户界面元素都是由View和ViewGroup的对象构成的。View:绘制在屏幕上的用户能与之交互的一个对象。
ViewGroup:是一个用于存放其他View(和ViewGroup)对象的布局容器
Android为我们提供了一个View和ViewGroup子类的集合,集合中提供了一些常用的输入控件(比如按钮和文本域)和各种各样的布局模式(比如线性或相对布局)
用户界面上的每一个组件都是使用View和ViewGroup对象的层次结构来构成的。每个ViewGroup都是要给看不见的用于组织子View的容器,而它的子View可能是输入控件或者在UI上绘制了某块区域的小部件。有了层次树,你就可以根据自己的需要,设计简单或者复杂的布局了(布局越简单性能越好)。
Android已经提供了一些app控件,标准的UI布局,只需定义内容且都有其属性介绍的API文档,如操作栏、对话框和状态通知栏等。
View:所有可视化控件的父类,提供组件描绘和时间处理方法
ViewGroup:View类的子类,可以拥有子控件,可以看作是容器 Android UI中的控件都是按照这种层次树的结构堆叠得,而创建UI布局的方式有两种,自己在Java里写代码或者通过XML定义布局,后者显得更加方便和容易理解
布局介绍
Android中有六大布局,分别是:
LinearLayout(线性布局),RelativeLayout(相对布局),TableLayout(表格布局)FrameLayout(帧布局),AbsoluteLayout(绝对布局),GridLayout(网格布局)
最常用的就是:LinearLayout(线性布局),RelativeLayout(相对布局)
LinearLayout详解:
gravity:控制组件多包含的子元素的对齐方式,可多个组合
layout_ gravity:控制该组件在父容器里的对齐方式
divider分割线:用于为此布局设置分割线图片,通过showDividers来设置分割线的所在位置,有四个可选值none,middle,beginning,end;
divider:为此布局设置分割线的图片
showDividers:设置分割线所在的位置,有四个可选值none,middle,beginning,end;
dividerPadding:设置分割线的padding
Java代码中设置weight属性
setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,
LayoutParams.WRAP_CONTENT, 1));
RelativiLayout(相对布局)
RelativiLayout详解:
gravity:设置容器内组件的对齐方式
ignoreGravity:设置了该属性为true的属性的组件,将不受gravity属性的影响
根据父容器定位:Layout_alighParentLeft 左对齐
android:layout_centerInParent 中间位置
根据兄弟组件定位:layout_toLeftOf 参考组建的左边
layout_above 参考组件的上方
layout_alignTop 对齐参考组件的上边界
margin(偏移):设置组件与父容器的编剧,又叫偏移
layout_margin 设置组件上下左右的偏移量
layout_marginLeft 设置组件离左边的偏移量
margin可以设置为负数
padding(填充):设置组件内部元素间的边距(比如TextView里的字体位置)
padding:往内部元素的上下文左右填充一定边距
paddingLeft:往内部元素的左边填充一定边距