目录
XML布局常用属性定义说明:
id:指定该视图编号。
layout_width:指定该视图的宽度。
- 具体的dp数值;
- match_parent:表示与上级视图一样宽;
- wrap_content:表示与内部内容一样宽(若内部内容超过上级视图的宽度,则该视图保持与上级视图一样宽,超出宽度的内容进行滚动显现)。
layout_height:指定该视图的高度。
- 具体的dp数值;
- match_parent:表示与上级视图一样宽;
- wrap_content:表示与内部内容一样宽(若内部内容超过上级视图的宽度,则该视图保持与上级视图一样宽,超出宽度的内容进行滚动显现)。
layout_margin:指定该视图与周围视图之间的空白距离(包括上下左右四个方向),也可以单独指定与其他四个方向的距离(marginTop、marginBottom、marginLeft、marginRight)。
minWidth:指定该视图的最小宽度。
minHeight:指定该视图的最小高度。
background:指定该视图的背景,可以是颜色,也可以是图片。
layout_gravity:指定视图与上级视图的对齐方式。
XML中的对齐方式 | Gravity类中的对齐方式 | 说明 |
---|---|---|
left | LEFT | 靠左对齐 |
right | RIGHT | 靠右对齐 |
top | TOP | 向上对齐 |
bottom | BOTTOM | 向下对齐 |
center | CENTER | 居中对齐 |
center_horizontal | CENTER_HORIZONTAL | 水平方向居中 |
center_vertical | CENTER_VERTICAL | 垂直方向居中 |
padding:指定该视图边缘与内部内容之间的空白距离。也可以单独指定与其他四个方向的距离(paddingTop、paddingBottom、paddingLeft、paddingRight)。
visibility:指定该视图的可视类型。
XML中的对齐方式 | View中的对齐方式 | 说明 |
---|---|---|
visible | VISIBLE | 可见,默认值 |
invisible | INVISIBLE | 不可见,虽然看不到但是还占着位置 |
gone | GONE | 消失,不仅看不到而且 不占据位置 |
代码中的设置方法:
- setLayoutParams:设置该布局的布局参数,参数对象的构造函数可以设置视图的宽度和高度。
- setMinimumWidth:设置该视图的最小宽度。
- setMinimumHeight:设置该视图的最小高度。
- setBackgroundColor:设置该视图的背景颜色。
- setBackgroundDrawable:设置该视图的背景图片。
- setBackgroundRescource:设置该视图的背景资源id。
- setPadding:设置该视图边缘与内部内容之间的空白距离。
- setVisibility:设置该视图的可视类型。
线性布局LinearLayout
- LinearLayout除了继承View/ViewGroup类的所有属性和方法外,还有其特有的XML属性,如下:
- orientation:指定线性布局的方向。horizontal表示水平布局,vertical表示垂直布局,默认为horizontal。
- gravity:指定内部布局视图与本线性布局的对齐方式,取值范围与layout_gravity相同。
- layout_weight:指定当前视图在宽度上占的权重(在下级视图节点中设置)。如果指定的是当前视图在宽度上占得权重,layout_width需要设置为0,如果指定的是当前视图在高度上占得权重,layout_height需要设置为0。
代码中增加的方法:
- setOrentation:设置线性布局的方向,LinearLayout.HORIZONTAL表示水平布局,LinearLayout.VERTICAL表示垂直布局。
- setGravity:设置布局内部视图与本线性布局的对齐方式。
滚动视图ScrollView
垂直滚动的视图名为ScrollView,水平滚动的视图名为HorientationScrollView。需要注意以下3点:
- 垂直方向滚动时,layout_width需要设置为match_parent,layout_height需要设置为wrap_content。
- 水平方向滚动时,layout_width需要设置为wrap_content,layout_height需要设置为match_parent。
- 滚动视图节点下面必须且只能挂着一个子布局节点,否则会报错Cause by:java.lang.IllegalStateException:ScrollView can host only one direct child。
示例代码:
<LinearLayout xmlns:android="https://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<ScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<View
android:layout_width="match_parent"
android:layout_height="50dp"
android:background="#00ff00"/>
<View
android:layout_width="match_parent"
android:layout_height="50dp"
android:background="#00ff00"/>
</LinearLayout>
</ScrollView>
</LinearLayout>
在这里考虑一个问题,有的时候我们ScrollView的实际内容不够,但是又想让它充满整个屏幕的话,如何去解决?
设置layout_height的值为match_parent,我们发现并没有办法实现我们预期的效果。因此在这里我们增加一个fillViewport的属性设置。
android:layout="match_parent"
android:fillViewport="true"
相对布局RelativeLayout
RelativeLayout下级视图的位置是相对位置,必须有具体的参照物才能确定最终位置。若不设置参照物,它会默认显示在RelativeLayout内部的左上角。
XML中相对位置属性 | RelativeLayout类中的相对位置 | 相对位置说明 |
---|---|---|
layout_toLeftOf | LEFT_OF | 当前视图在指定视图的左边 |
layout_toRightOf | RIGHT_OF | 当前视图在指定视图的右边 |
layout_above | ABOVE | 当前视图在指定视图的上边 |
layout_below | BELOW | 当前视图在指定视图的下边 |
layout_alignLeft | ALIGN_LEFT | 当前视图与指定视图左侧对齐 |
layout_alignRight | ALIGN_RIGHT | 当前视图与指定视图右侧对齐 |
layout_alignTop | ALIGN_TOP | 当前视图与指定视图顶部对齐 |
layout_alignBottom | ALIGN_BOTTOM | 当前视图与指定视图底部对齐 |
layout_centerInParent | CENTER_IN_PARENT | 当前视图在上级视图的中间 |
layout_centerHorizontal | CENTER_HORIZONTAL | 当前视图在上级视图的水平方向居中 |
layout_centerVertical | CENTER_VERTICAL | 当前视图在上级视图的垂直方向居中 |
layout_alignParentLeft | ALIGN_PARENT_LEFT | 当前视图与上级视图的左侧对齐 |
layout_alignParentRight | ALIGN_PARENT_RIGHT | 当前视图与上级视图的右侧对齐 |
layout_alignParentTop | ALIGN_PARENT_TOP | 当前视图与上级视图的顶部对齐 |
layout_alignParentBottom | ALIGN_PARENT_BOTTOM | 当前视图与上级视图的底部对齐 |
帧布局FrameLayout
FrameLayout只能统统从上级视图FrameLayout的左上角开始添加,并且后面添加的子视图会将之前的子视图覆盖掉。帧布局一般用于需要重叠显示的场合,例如:绘图、游戏界面。
- foreground:指定帧布局的前景图像。该图像在布局内部用于处于最顶层,不会被其他视图覆盖掉。
- foregroundGravity:指定前景图像的对齐方式,同gravity。
绝对布局AbsoluteLayout
表格布局TableLayout
控件
文本视图TextView
XML中属性 | 代码中TextView的设置方法 | 说明 |
---|---|---|
text | setText | 设置文本内容 |
textSize | setTextSize | 设置文本大小 |
textColor | setTextColor | 设置文本颜色 |
textAppearance | setTextAppearance | 设置文本风格,风格定义在res/style.xml中 |
gravity | setGravity | 设置文本的对齐方式 |
图像视图ImageView
- scaleType:指定图形的拉伸类型,默认是fitCenter。
XML中的拉伸类型 | ScaleType类中的拉伸类型 | 说明 |
---|---|---|
fitXY | FIT_XY | 拉伸图片使其正好填满视图(可能会被拉伸变形) |
fitStart | FIT_START | 拉伸图片使其位于视图上部 |
fitCenter | FIT_CENTER | 拉伸图片使其位于视图中间 |
fitEnd | FIT_END | 拉伸图片使其位于视图下部 |
center | CENTER | 保持图片原尺寸,并使其位于视图中间 |
centerCrop | CENTER_CROP | 拉伸图片使其充满视图,并位于视图中间 |
centerInside | CENTER_INSIDE | 使图片位于视图中间(只压不拉),图片尺寸小于视图时,同center;图片尺寸大于视图时,同fitCenter。 |
- src:指定图片来源,图形按照scaleType拉伸。
截图功能相关方法:
- setDrawingCacheEnabled:设置绘图缓存的可用状态。ture表示打开,false表示关闭。
- isDrawingCacheEnabled:判断该控件的绘图缓存是否可用。
- setDrawingCacheQuality:设置绘图缓存的质量。
- getDrawingCache:获取该控件的绘图缓存结果,返回值为Bitmap类型。
- setDrawingCacheBackgroundColor:设置绘图缓存的背景颜色,一般我们将背景色设置为默认颜色(白色)。
步骤如下:
1)开始截图时,首先调用setDrawingCacheEnabled方法,设置绘图缓存为可用状态(因为只有先开启绘图缓存,之后变更的界面才会记录到缓存中)。
2)调用getDrawingCache方法获取缓存中的图片数据。
3)完成截图后,我们不能立刻采用setDrawingCacheEnabled关闭绘图缓存,延迟若干毫秒后再行调用,如果还要截图就再次调用setDrawingCacheEnabled重新开启绘图缓存。
图像按钮ImageButton
ImageButton派生自ImageView,ImageView所拥有的属性和方法,ImageButton都拥有,只是ImageButton有一个默认的按钮外观。
要想在文字周围放图片,具体在XML布局文件中的设置有以下5个属性:
- drawableTop:指定文本上方的图形。
- drawableBottom:指定文本下方的图形。
- drawableLeft:指定文本左方的图形。
- drawableRight:指定文本右方的图形。
- drawablePadding:指定图形与文本的间距。
代码中可调用如下方法:
- setCompoundDrawable:设置文本周围图形,可分别设置左边、右边、上方、下方图形。
- setCompoundDrawablePadding:设置图形与文本的间距。
状态列表图形
状态类型 | 说明 | 常用的控件 |
---|---|---|
state_pressed | 是否按下 | 按钮Button |
state_checked | 是否勾选 | 单选框RadioButton、复选框CheckBox |
state_focused | 是否获取焦点 | 文本编辑框EditText |
state_selected | 是否选中 | 各控件均可 |
形状图形
形状图形的定义文件以shape为根节点。根节点下定义了6个节点:corners(圆角)、gradien(渐变)、padding(间隔)、size(尺寸)、solid(填充)、stroke(描边),各节点属性值主要是长宽、半径、角度以及颜色。
1、shape
形状类型 | 说明 |
---|---|
rectangle | 矩形,默认值 |
oval | 椭圆,此时corners节点会失效 |
line | 直线。此时必须设置stroke节点,否则会报错 |
ring | 圆环 |
2、corners
corners是shape的下级节点,用来描述四个圆角规格定义。
属性 | 说明 |
---|---|
bottomLeftRadius | 像素类型,左下圆角的半径 |
bottomRightRadius | 像素类型,右下圆角的半径 |
topLeftRadius | 像素类型,左上圆角的半径 |
topRightRadius | 像素类型,右上圆角的半径 |
radius | 像素类型,圆角半径 |
3、gradien
gradien是shape的下级节点,用来描述形状内部的颜色渐变定义。
- angle:整型,渐变的起始角度。为0时表示时钟9点位置,值增加表示往逆时针方向旋转。
- type:字符串类型,渐变类型:
-
渐变类型取值
渐变类型 说明 linear 线性渐变,默认值 radial 放射渐变,起始颜色就是圆心颜色 sweep 滚动渐变,即一个线段以某个端点为圆心做360度旋转 - centerX:浮点型,圆心的X坐标。当android:type=“linear”时不可用。
- centerY:浮点型,圆心的Y坐标。当android:type=“linear”时不可用。
- gradientRadius:整型,渐变的半径。只有当设置android:type=“radial”时才需要设置该属性。
- centerColor:颜色类型,渐变的中间颜色。
- startColor:颜色类型,渐变的起始颜色。
- endColor:颜色类型,渐变的终止颜色。
- useLevel:布尔类型,设置为true无渐变色,false有渐变色。
4、padding
padding是shape的下级节点,用来描述形状图形和周围视图的间隔大小。
常用属性 | 说明 |
---|---|
bottom | 像素类型,与下边的间隔 |
left | 像素类型,与左边的间隔 |
right | 像素类型,与右边的间隔 |
top | 像素类型,与上边的间隔 |
5、size
size是shape的下级节点,用来描述形状图形的尺寸大小(宽度和高度)。
- height:像素类型,图形高度。
- width:像素类型,图形宽度。
6、solid
solid是shape的下级节点,用来描述形状图形内部的填充色彩。
- color:颜色类型,内部填充的颜色。
7、stroke
stroke是shape的下级节点,用来描述形状图形四周边线的规格定义。
- color:颜色类型,描边的颜色。
- dashGap:像素类型,每段虚线之间的间隔。
- dashWidth:像素类型,每段虚线的宽度。
- width:像素类型,描边的宽度。若dashGap和dashWidth其中有一个值为0,则描边为实线。
复选框
由于它是CompoundButton类的派生类,因此可以使用CompoundButton的属性和方法。除此之外还有单选按钮RadioButton和开关按钮Switch,均属于CompoundButton的派生类。
CompoundButton主要的两个属性:
- checked:指定按钮的勾选状态,true表示勾选,false表示未勾选,默认为未勾选。
- button:指定左侧勾选图标的图形,若不指定便使用系统默认图标。
CompoundButton在代码中通过如下方法进行设置:
- setChecked:设置按钮的勾选状态。
- setButtonDrawable:设置左侧勾选图标的图形。
- setOnCheckedChangeListener:设置勾选状态变化的监听器。
- isChecked:判断按钮是否勾选。
开关按钮Switch
XML中属性 | Switch类的设置方法 | 说明 |
---|---|---|
textOn | setTextOn | 设置右侧开启时的文本 |
textOff | setTextOff | 设置左侧关闭时的文本 |
switchPadding | setSwitchPadding | 设置左右两个开关按钮之间的距离 |
thumbTextPadding | setThumbTextPadding | 设置文本左右两边的距离,如果设置了该属性,那么switchPadding属性则失效 |
thumb | setThumbDrawable setThumbResource | 设置开关轨道的背景 |
track | setTrackDrawable setTrackResource | 设置开关标识的图标 |
单选按钮RadioButton
单选按钮要求在一组按钮里面选择其中一项,且不能多选。因此我们必要有一个容器确定这组按钮的范围,这个容器即为RadioGroup。当然在RadioGroup下,不仅仅只能有RadioButton,除此之外还有TextView、ImageView等。
RadioGroup常用方法:
- setCheckedId:选中指定资源编号的单选按钮。
- getCheckedRadioButtonId:获取选中状态单选按钮的资源编号。
- setOnCheckedChangeListener:设置单选按钮勾选变化的监听器。