ViewContainer / ViewGroup视图容器 UI控件的容器
View--是所有视图的父类,很多显示规则
View的通用属性
android:id 设置UI控件的唯一标识
android:layout_width 设置高度
android:layout_heigth 设置高度
android:padding 设置UI控件的内边距(子控件与父控件之间的边距),例如EditText:文字距离控件EditText边框的距离
paddingTop,paddingLeft等类型
android:margin UI控件的外边距(控件与控件之间的边距)
android:alpha UI控件的透明度
android:background UI控件的背景颜色
android:onClick 设置UI控件的点击事件
注意:宽度、高度优先级大于权重
view属性
layout_width 宽度:(1)具体值100dp,(2)wrap_content 自适应 (2)wrap_parent父框
背景颜色:#FFFF0000 前面两个FF代表透明度
layout_marginleft=20dp 左边距
onClick 设置UI控件的点击事件,必须在Activity中声明
public void ccc(View view){
log.e("tag")
}
当两个点击事件名称相同时,在TextView设置Id,通过Id区分
Button
事件监听:
通过setOnclickListener方法,给Button设置点击事件监听器
方法一:通过android:onClick属性,在Activity增加其方法
方法二:通过内部类方法实现,内部类继承OnClickListener,当点击事件触发事件较多时,可以通过内部类方法,封装
方法三:通过匿名内部类实现,每次点击Button时,该方法会被回调,会覆盖声明中的方法
方法四:通过继承接口onClickListener,通过这个方法,多个按钮可以实现同一个功能,也可以在同一个重写方法中通过View.getId()实现不同的功能
注意:内部类访问外部类对象时,通过:外部类类名.this
(1)checkBox 监听方法:setOnCheckedChangeListener(),
(2)RadioButton
注意:必须将单选框放入RadioGroup中,
监听方法:setOnCheckedChangeListener();与复选框控件类似,区别:重写的方法第一个参数不同,复选框中第一个参数为复选框控件本省,而单选框中第一个参数为RadioGroup
(3)ToggleButton:textOn(设置开标签:默认on)、textOff(可以设置关闭标签,默认off),可以设置变化监听
(4)switch:(无线网开关应用),最低版本为14
EditText(文本输入框)
常用属性:android:id;
android:maxLength 设置文本输入框的最大输入长度
android:maxlines 设置文本输入框最多显示的行数
android:singleLine 设置EditText单行显示
高级属性
:android:hint 设置EditText的提示信息
:android:phoneNumber="true" 设置EditText只能显示数字
: android:password="true" 设置密码形式。不可见
重要属性:android:inputType:用于帮助输入法显示合适的键盘类型
“none”无类型 “text”普通文本 “textPersonName”人的姓名
“numberPassword”数字密码 “textEmailAddress”email地址
“phone”电话 “time”时间 “date”日期 “number”数字
“numberSigned”输入正整数或者负整数,numberDecimal输入正数
EditText事件监听:
实现步骤:
1、实现接口TextWatcher
2、实现抽象方法
TextWatcher tw=new TextWacher(){
public void onTextChanged(CharSequence s, int start, int before, int count) {
Log.e("TAG", "s是"+s+" "+count);//s表示输入的文本内容,start表示第几次输入,从0开始,例如:输入1 2 3,当输入2时,start=1
}
}
3、通过addTextChangeListener的方法将实现的TextWatcher设置给EditText
EditText edit=findViewById(R.id.edit);
edit.addTextChangeListener(tw)
注意:实现TextWatcher可以使用匿名内部类,也可以将当前Activity实现TextWatche
imageView
属性
scaleType:
1.matrix: 将图片从ImageView的左上角开始绘制,超出部分被裁剪掉
2.fitXY: 将图片进行缩放,填充ImageView,并不是按照原图的比例进行缩放
3.fitStart: 将图片缩放至宽高中的最小值,并且将图片显示在左方或者上方
4.fitCenter: 将图片缩放至宽高中的最小值,并且将图片显示在中心
5.fitEnd: 将图片缩放至宽高中的最小值,并且将图片显示在右方或者下方
6.center: 图片不会缩放,显示在ImageView的中心位置,超出部分被裁剪
7.centerCrop: 图片显示在ImageVIew的中心位置,并且全图缩放填充ImageView
8.centerInside:(等同于fitCenter一样)
注意:ImageButton是ImageView的子类;
dpi、px、dip、dp、sp区别
dpi:指像素密度,即每英寸(1英寸=2.53厘米)内像素点的个数,dpi越高,则单位长度的像素越高,屏幕清晰度就越高,它不是表示长度的单位,
px:pixel像素,1个px就是一个可发光点。
dip:设备独立像素,不依赖像素,但是和屏幕密度有关;目前这个单位已经被dp所取代
dp:在安卓中用来表示非文字大小的尺寸。1dp的长度与屏幕大小无关,在不同屏幕上表现的长度是一样的
sp:缩放与像素无关的文字大小,在安卓中常用来表示文字的大小
dp和px的换算公式:1dp=(dpi大小)/160px
progressBar(进度条)
默认形式圆圈样式
水平进度条:style=“?android:attr/progressBarStyleHroizontal”
pb.getProgress获取一级进度
pb.getSecondProgress获取二级进度条
setProgress, setSecondProgress
SeekBar拖动条
(1)通过findViewById找到seekBar
seekBar=(SeekBar) findViewById(R.id.seekbar);
text2=(TextView) findViewById(R.id.text2);
注意:text2.setText(R.string.progressbar);将拖动条信息写到文本中
(2)设置监听事件,setOnSeekBarChangeListener()
(3)重写方法
注意:可以通过thume属性设置拖动头图标
RatingBar评分条
android:numstars 设置星星总数
android:rating 设置高亮星星数
android:setrating 设置星星的数量
style:默认是可操作的
style="?android:attr/ratingBarStyleIndicator"不可操作
style="?android:attr/ratingBarStylesmall" 改变星星的大小
style="?android:attr/ratingBarStyle"
visibility:设置可见与不可见:visible(可见) invisible(不可见,存在控件) gone(不可见,不占用控件空间)
ScrollView滚动视图
只能有一个直接子控件,可以镶嵌(子控件中再添加控件),一般可以用线性布局
smoothscrollTo(int x,int y)移动到
smoothscrollBy(int x,int y) 移动多少
spinner:下拉菜单
属性:layout_width、layout_height、entries关联一个字符串数组、spinnerMode(dialog:对话框形式,dropdown下拉框形式)
prompt:再菜单显示提示信息,例如:请选择
在res.value中创建数组文件arrary.xml,在文件内创建数组,数组必须命名name,
在java代码中通过getResources.getStringArray("name")返回一个字符串数组String[]
在xml布局文件,通过@array/name的方式指向此字符串数组
通过<item>标签,往string-array中添加元素
适配器:适配器是从数据源到UI组件的中介,负责吧数据源填充到UI组件中,以便显示给用户
MVC模式:M:mode模型(数据)、V:View(视图,控件)、C:controller(控制器)(适配器)
好处:实现View和Mode的分离,中间适配器起到桥梁作用,分离的好处:可以将相同的数据通过适配器填充到不同的控件中,而不是单一控件
界面Activity中spinner动态输入中 (1)数据源初始化
(2)spinner初始化
(3)item布局文件的初始化:方法一:自定义item(在layout文件中创建),通过id找到,方法二:使用android定义的:android.R.layout.simple_list_item1
(4)适配器初始化(ArrayAdapter<Object>)并把数据源和item文件放入其中
(5)将适配器设置到spinner中,setAdpater(adpater)
监听:setOnItemSelectedListener,
autocompleteTextView自动补全文本视图
默认从第二个输入字符开始自动补全:通过completionThredShold="1"设置
Selector
创建Selector步骤
(1)在res文件夹下创建文件夹drawable
(2)在drawable文件夹中创建以selector跟标签的的XML文件
(3)在Selector中创建item,并指定状态和需要使用的背景图片(颜色)
(4)在xml布局文件中,通过设置android:background属性可以设置状态选择器
将:button原先的选中框取消:通过:button="@null"
注意:可以是图片、颜色或者shape
shape
相关属性
solid:填充(颜色)
gradient:颜色渐变:startColor、centercolor、endcolor、
angle:颜色渐变角度,默认从0度开始(即从左边开始),必须是是45度的倍数
corners:角度,控制形状
stroke:外边(1)width外边的厚度, (2)color:外边的颜色; (3)dashwidth 外边间隔时,外边一小段的长度,(4)dashgap 外边间隔时,间隔长度
创建步骤:(1)在res文件夹下创建drawable
(2)在创建的drawable文件夹下创建shape类型的xml文件
(3)通过@drawable/shapename引用