布局及控件

目录

XML布局常用属性定义说明:

线性布局LinearLayout

滚动视图ScrollView

相对布局RelativeLayout 

帧布局FrameLayout

绝对布局AbsoluteLayout

表格布局TableLayout

控件

文本视图TextView

图像视图ImageView

图像按钮ImageButton

 状态列表图形

形状图形

复选框

开关按钮Switch

单选按钮RadioButton


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类中的对齐方式说明
leftLEFT靠左对齐
rightRIGHT靠右对齐
topTOP向上对齐
bottomBOTTOM向下对齐
centerCENTER居中对齐
center_horizontalCENTER_HORIZONTAL水平方向居中
center_verticalCENTER_VERTICAL垂直方向居中

padding:指定该视图边缘与内部内容之间的空白距离。也可以单独指定与其他四个方向的距离(paddingTop、paddingBottom、paddingLeft、paddingRight)。

visibility:指定该视图的可视类型。

可视类型的取值说明
XML中的对齐方式View中的对齐方式说明
visibleVISIBLE可见,默认值
invisible INVISIBLE不可见,虽然看不到但是还占着位置
goneGONE消失,不仅看不到而且 不占据位置

代码中的设置方法:

  • 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_toLeftOfLEFT_OF当前视图在指定视图的左边
layout_toRightOfRIGHT_OF当前视图在指定视图的右边
layout_aboveABOVE当前视图在指定视图的上边
layout_belowBELOW当前视图在指定视图的下边
layout_alignLeftALIGN_LEFT当前视图与指定视图左侧对齐
layout_alignRightALIGN_RIGHT当前视图与指定视图右侧对齐
layout_alignTopALIGN_TOP当前视图与指定视图顶部对齐
layout_alignBottomALIGN_BOTTOM当前视图与指定视图底部对齐
layout_centerInParentCENTER_IN_PARENT当前视图在上级视图的中间
layout_centerHorizontalCENTER_HORIZONTAL当前视图在上级视图的水平方向居中
layout_centerVerticalCENTER_VERTICAL当前视图在上级视图的垂直方向居中
layout_alignParentLeftALIGN_PARENT_LEFT当前视图与上级视图的左侧对齐
layout_alignParentRightALIGN_PARENT_RIGHT当前视图与上级视图的右侧对齐
layout_alignParentTopALIGN_PARENT_TOP当前视图与上级视图的顶部对齐
layout_alignParentBottomALIGN_PARENT_BOTTOM当前视图与上级视图的底部对齐

 

帧布局FrameLayout

FrameLayout只能统统从上级视图FrameLayout的左上角开始添加,并且后面添加的子视图会将之前的子视图覆盖掉。帧布局一般用于需要重叠显示的场合,例如:绘图、游戏界面。

  • foreground:指定帧布局的前景图像。该图像在布局内部用于处于最顶层,不会被其他视图覆盖掉。
  • foregroundGravity:指定前景图像的对齐方式,同gravity。

绝对布局AbsoluteLayout

表格布局TableLayout

 

控件

文本视图TextView

TextView的基本属性和设置方法
XML中属性代码中TextView的设置方法说明
textsetText设置文本内容
textSizesetTextSize设置文本大小
textColorsetTextColor设置文本颜色
textAppearancesetTextAppearance设置文本风格,风格定义在res/style.xml中
gravitysetGravity设置文本的对齐方式

图像视图ImageView

  • scaleType:指定图形的拉伸类型,默认是fitCenter。
拉伸类型的取值
XML中的拉伸类型ScaleType类中的拉伸类型说明
fitXYFIT_XY拉伸图片使其正好填满视图(可能会被拉伸变形)
fitStartFIT_START拉伸图片使其位于视图上部
fitCenterFIT_CENTER

拉伸图片使其位于视图中间

fitEndFIT_END拉伸图片使其位于视图下部
centerCENTER保持图片原尺寸,并使其位于视图中间
centerCropCENTER_CROP拉伸图片使其充满视图,并位于视图中间
centerInsideCENTER_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的下级节点,用来描述四个圆角规格定义。

corners属性说明
属性说明
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的下级节点,用来描述形状图形和周围视图的间隔大小。

padding取值说明
常用属性说明
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

Switch控件的属性和设置方法说明
XML中属性Switch类的设置方法说明
textOnsetTextOn设置右侧开启时的文本
textOffsetTextOff设置左侧关闭时的文本
switchPaddingsetSwitchPadding设置左右两个开关按钮之间的距离
thumbTextPaddingsetThumbTextPadding设置文本左右两边的距离,如果设置了该属性,那么switchPadding属性则失效
thumb

setThumbDrawable

setThumbResource

设置开关轨道的背景
track

setTrackDrawable

setTrackResource

设置开关标识的图标

单选按钮RadioButton

单选按钮要求在一组按钮里面选择其中一项,且不能多选。因此我们必要有一个容器确定这组按钮的范围,这个容器即为RadioGroup。当然在RadioGroup下,不仅仅只能有RadioButton,除此之外还有TextView、ImageView等。

RadioGroup常用方法:

  • setCheckedId:选中指定资源编号的单选按钮。
  • getCheckedRadioButtonId:获取选中状态单选按钮的资源编号。
  • setOnCheckedChangeListener:设置单选按钮勾选变化的监听器。
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值