前言
UI设计可通过XML配置文件和Java代码创建,本文主要讲述View和ViewGroup,布局管理器
一、View(视图)
View类支持的常用属性和方法
XML属性 | 方法 | 描述 |
---|---|---|
backgroud | setBackgroudResource(float) | 设置背景 |
clickable | setClickable(bloolean) | 是否响应事件 |
elevation | setElevation(float) | API 21 新增,用于设置Z轴深度,属性值为带单位的浮点数 |
id | setId(int) | 组件唯一标识符ID |
longClickable | setLongClickable(boolean) | 是否响应长按事件,true或者false |
minHeight | setMinimumHeight(int) | 最小高度 |
minWidth | setMinimumWidth(int) | 最小宽度 |
onClikc | 单击事件触发的方法 | |
padding | setPaddingRelative(int,int,int,int) | 设置4个內间距,分别有paddingLeft,paddingRight,paddingEnd,paddingTop等 |
margin | setMarginRelative(int,int,int,int) | 设置外间距,分别由end,top,right,left等,用于ViewGroup |
visibility | setVisibility(int) | View的可见性 |
二、ViewGroup
ViewGroup继承于View,它是类的扩展,用于容纳其他组件的容器.。
ViewGroup控制其子组件分布是,依赖于ViewGroup.LayoutParams和ViewGroup.MarginLayoutParams两个内部类。
ViewGroup.LayoutParams类:封装了布局的位置、宽高等信息,支持android:layout_height和android:layout)width两个xml属性,也可以FILL_PARENT和WRAP_CONTENT或者自己指定
ViewGroup.MarginLayoutParams类:用于控制其子组件的外间距,通常有marginTop,marginEnd,marginRight,marginLeft等
三、布局管理器
Android主要有5种布局管理器
常用:
RelativeLayout(相对布局):通过相对定位来控制组件位置
LinearLayout(线性布局):在垂直或水平方向一次拜访组件
FrameLayout(帧布局):没有任何定位方式,默认情况下,摆放在容器左上角,并覆盖
ConstraintLayout(约束布局):通过设置约束来对控件进行布局
了解:
TableLayout(表格布局):使用表格方式按行列摆放组件
AbsoluteLayout(绝对布局):通过绝对定位(x,y)坐标来设置控件摆放位置
Relativelayout
RelativeLayout的XML属性
XML属性 | 描述 |
---|---|
gravity | 设置布局管理器中子控件的对其方式 |
ignoreGravity | 用于指定那个控件不受gravity的影响 |
above | 属性值为其他控件的ID,指定当前控件位于那个控件的上方 |
alignBottom | 属性值为其他控件的ID,指定当前控件和那个控件的下边对其 |
alignLeft | 属性值为其他控件的ID,指定当前控件和那个控件的左边对齐 |
alignRight | 属性值为其他控件的ID,指定当前控件和那个控件的右边对齐 |
alignTop | 属性值为其他控件的ID,指定当前控件和那个控件的顶部对齐 |
below | 属性值为其他控件ID,指定当前控件位于那个控件下方 |
alignParentBottom | 属性值为Boolean,用于指定当前控件与父容器的底部对齐 |
alignParentLeft | 属性值为Boolean,用于指定当前控件与父容器左边对齐 |
alignParentRight | 属性值为Boolean,用于指定当前控件与父容器右边对齐 |
alignParenTop | 属性值为Boolean,用于指定当前控件与父容器顶部对齐 |
centerHorizontal | 属性值为Boolean,设定控件在父容器中水平居中 |
enterInParent | 属性值为Boolean,设定控件在父容器中央位置 |
centerVertical | 属性值为Boolaen,设定控件在父容器中垂直居中 |
toLeftOf | 属性值为其他控件的ID,指定当前控件位于那个控件的左边 |
toRightOf | 属性值为其他控件的ID,指定当前控件位于那个控件的右边 |
LinearLayout
LinearLayout
XML属性 | 描述 |
---|---|
orientation | 布局管理器排列方式,可选值为horizontal(水平)和vertical (垂直) |
gravity | 设置子控件的显示位置,可选值为top,bottom,left,right,center_vertival,center_horizeontal,center等,这些属性值可同时指定名单需要竖线隔开 |
layout_width | 控件宽度,可选值为match_parent(和父容器匹配),wrap_content(包裹内容)或者指定大小 |
layout_height | 控件高度,可选值为match_parent(和父容器匹配),wrap_content(包裹内容)或者指定大小 |
id | 布局管理器设置id,用于Java代码引用 |
background | 设置背景,可以是图片资源,也可以是背景颜色 |
layout_gravity | 设置子控件在父容器中的位置 |
layout_weight | 设置组件所占权重,即用于设置组件占父容器剩余控件比例 |
FrameLayout
XML属性 | 描述 |
---|---|
foreground | 设置该帧布局管理器的前景图像 |
foregroundGravity | 定义绘制前景图像的gravity属性,即前景图像的位置 |
四、难点
padding和margin的区别
padding(內间距)表示在View的顶部、底部、左侧和右侧的空白区域,设置内容与View边缘的距离,设置指定內间距后,视图内容将偏离VIew边缘指定的距离
Margin(外间距)表示组件的顶部、底部、左侧、右侧的空白区域,设置组件与父容器的距离。
总结
本文主要讲述Android开发中UI设计,了解UI中的布局方式和布局管理器,以及他们中的XML属性。主要掌握RelativLayout、LinearLayout、constraint Layout和FrameLayout.