设计和代码切换,一般情况下,我们 UI 布局都是先拖再细调整,也就是先用设计默认拖出一个大概的布局,然后用代码来微调
属性 | 说明 |
---|---|
android:id | 为 TextView 设置一个组件 id,方便在 Java 中通过 findViewById() 方法获取到该对象 |
android:layout_width | TextView 的宽度,值一般为 wrap_content 或者 match_parent(fill_parent),前者是控件显示的内容多大,控件就多大,而后者会填满该控件所在的父容器 当然也可以设置成特定的大小,比如 200dp |
android:layout_height | TextView 的宽度,内容同上 |
android:gravity | 设置控件中内容的对齐方向,可以是 top / button / left / right / center_vertical / fill_vertical... |
android:text | 设置显示的文本内容,一般将字符串写到 string.xml 文件,然后通过 @string/xxx 来引用 |
android:textColor | 设置字体颜色,一般将颜色写入 colors.xml 文件,然后通过 @color/xxx 引用 |
android:textStyle | 设置字体风格,可以用竖线(|)叠加,比如 bold|italic 有三个可选值: normal(无效果) bold(加粗) italic(斜体) |
android:textSize | 设置字体大小,单位一般用 sp |
android:background | 设置 TextView 的背景颜色,可以是图片 |
跑马灯效果:
属性 | 说明 |
---|---|
android:singleLine | 设置是否单行显示 |
android:ellipsize | 设置文字超出控件宽度时的显示方式,值有 end 显示结尾部分 marquee 跑马灯滚动显示 middle 显示中间部分 none 默认 start 显示开始部分 |
android:marqueeRepeatLimit | 设置跑马灯重复次数,值可以是以下几种 marquee_forever 重复 具体的数字,比如 2 |
识别链接效果:
android:autoLink
属性用于设置 TextView 是否识别链接类型和设置可识别的链接类型
android:autoLink
的值有以下几种
值 | 说明 |
---|---|
none | 不识别,禁用识别 |
all | 可以识别全部,也就是下面四种 |
电子邮件 | |
map | 地图 |
phone | 一串数字,或者以 tel:// 开头的电话号码 |
web | 网页地址,以 http(s):// 开头的网址 |
设置 TextView 字间距
属性 android:textScaleX
控制字体水平方向的缩放,默认值 1.0f,类型值是 float
如: setScaleX(2.0f);
设置 TextView 行间距
Android TextView 默认显示中文时会比较紧凑,为了让每行保持的行间距,可以设置如下属性
属性 | 说明 |
---|---|
android:lineSpacingExtra | 设置行间距,如"3dp" |
android:lineSpacingMultiplier | 设置行间距的倍数,如 "1.2" |
如:setLineSpacing(1.5)
属性 | 说明 |
---|---|
android:hint | 提示文本的内容,比如 "请输入账户名称" |
android:textColorHint | 提示文本的颜色 |
android:selectAllOnFocus | ="true",获得焦点获取文本所有内容 |
android:minLines="3" | 设置最小行的行数为 3 |
android:maxLines="3" | 设置 EditText 最大的行数为 3 当输入内容超过 maxline,文字会自动向上滚动 |
android:singleLine="true" | 限制 EditText 只允许单行输入,而且不会滚动 |
android:inputType
:对输入文本类型进行限制
文本类型,多为大写、小写和数字符号
android:inputType="none"
android:inputType="text"
android:inputType="textCapCharacters"
android:inputType="textCapWords"
android:inputType="textCapSentences"
android:inputType="textAutoCorrect"
android:inputType="textAutoComplete"
android:inputType="textMultiLine"
android:inputType="textImeMultiLine"
android:inputType="textNoSuggestions"
android:inputType="textUri"
android:inputType="textEmailAddress" // 邮箱类型
android:inputType="textEmailSubject"
android:inputType="textShortMessage"
android:inputType="textLongMessage"
android:inputType="textPersonName"
android:inputType="textPostalAddress"
android:inputType="textPassword" // 密码
android:inputType="textVisiblePassword"
android:inputType="textWebEditText"
android:inputType="textFilter"
android:inputType="textPhonetic"
数值类型
android:inputType="number"
android:inputType="numberSigned"
android:inputType="numberDecimal"
android:inputType="phone" // 拨号键盘
android:inputType="datetime"
android:inputType="date" // 日期键盘
android:inputType="time" // 时间键盘
ImageView 有 2中属性,分为为: src, backgroud,他们之间的区别是:
- background 通常指的都是 背景, 而 src 指的是 内容
- 当使用 src 填入图片时, 是按照图片大小直接填 ,不会进行拉伸。而使用 background 填入图片,则是会根据 ImageView 给定的宽度来进行 拉伸
设置缩小放大的大小
android:adjustViewBounds | 设置缩放时是否保持原图长宽比 |
android:maxHeight | 设置 ImageView 的最大高度 |
android:maxWidth | 设置 ImageView 的最大宽度 |
1. Button 继承自 TextView ,所以可以 使用 TextView 的那些属性
2. 我们可以将 Button 的 android:background
属性设置为该 drawable 资源即可轻松实现按下 按钮时不同的按钮颜色或背景
下表列出了可以设置的属性
属性 | 说明 |
---|---|
drawable | 引用的 Drawable 位图,可以把它放到最前面,就表示组件的正常状态 |
android:state_focused | 是否获得焦点 |
android:state_window_focused | 是否获得窗口焦点 |
android:state_enabled | 控件是否可用 |
android:state_checkable | 控件可否被勾选,例如,checkbox |
android:state_checked | 控件是否被勾选 |
android:state_selected | 控件是否被选择,针对有滚轮的情况 |
android:state_pressed | 控件是否被按下 |
android:state_active | 控件是否处于活动状态,例如,SlidingTab |
android:state_single | 控件包含多个子控件时,确定是否只显示一个子控件 |
android:state_first | 控件包含多个子控件时,确定第一个子控件是否处于显示状态 |
android:state_middle | 控件包含多个子控件时,确定中间一个子控件是否处于显示状态 |
android:state_last | 控件包含多个子控件时,确定最后一个子控件是否处于显示状态 |
在 res/drawable
目录下新建一个按钮状态的资源文件 btn_bg.xml
RadioButton 单选按钮就是只能够选中一个,所以我们需要把 RadioButton 放到 RadioGroup 按钮组中,从而实现单选功能
RadioButton
继承自 Button
,所以拥有 Button
的所有公开属性和方法
RadioButton
只有两个状态,选中与未选中,所以也就只有一个属性是最重要的,那就是 android:checked
属性 | 说明 |
---|---|
android:checked | 设置或获取 RadioButton 的选中状态 |
如果 RadioButton
未选中,那么点击它可以让它选中,但反过来是不可以的,就是不能从选中状态到未选中状态
要实现 RadioButton
的 单选功能,需要把所有的 RadioButton
放到 RadioGroup
里面
用于将几个 RadioButton
组在一起形成单选按钮组,实现单选功能,也就是选中一个,会取消其它选项的选中
RadioGroup
只提供了一个 XML 属性 android:checkedButton
用于指定初始化时选中的 ID
属性 | 说明 |
---|---|
android:checkedButton | 初始化时选中的选项 ID (android:id ) |
RadioGroup
提供了很多方法用于选中或者获取选中的选项 ID ,下面列出常用的几个
方法 | 说明 |
---|---|
check(int id) | 根据 id 选中某个选项 |
clearCheck() | 清除所有选项的选中状态,也就时一个都没选中 |
getCheckedRadioButtonId() | 获取选中的选项 id |
事件 | 说明 |
---|---|
OnCheckedChangeListener | 当 RadioGroup 中的某个选项被选中时触发 |
Android CheckBox (复选框) 继承自 Button
,可以说是只有两种状态的按钮 (选中或未选中状态)
可以把多个 CheckBox
放在一起实现同时选中多项,但是,记住,它们之间没有任何关系,一个的选中并不会影响另一个选中或者不选中
CheckBox
除了从 Button
继承而来的属性外,没有自己的属性,但从 CompoundButton
继承了一个属性 android:checked
用于表示是否选中
属性 | 说明 |
---|---|
android:checked | 设置或者获取 CheckBox 是否选中 |
CheckBox
提供了几个方法和事件用于设置或者获取自身是否选中状态
方法 | 说明 |
---|---|
isChecked() | 判断自身是否选中 |
setChecked(boolean checked) | 设置自身是否选中状态 |
事件 | 说明 |
---|---|
OnCheckedChangeListener | 选中状态改变监听器,当自身选中状态变化时会触发这个事件 |
ToggleButton (开关按钮) 允许我们在两个状态之间切换,有点类似于电灯的开关
ToggleButton
和 CheckBox
一样都继承自 CompoundButton
,所以都有 Button
的属性和方法,又有 CompoundButton
的属性 android:checked
属性 | 说明 |
---|---|
android:disabledAlpha | 当 ToggleButton 处于 禁用 时的透明度 |
android:textOff | 当 ToggleButton 处于 关 时的文本,如:android:textOff="关闭" |
android:textOn | 当 ToggleButton 处于 开 时的文本 |
ToggleButton
提供了一些方法用来改变或获取自身的状态和开关时的文本
方法 | 说明 |
---|---|
getTextOff() | 获取 ToggleButton 关时显示的文本 |
getTextOn() | 获取 ToggleButton 开时显示的文本 |
setChecked(boolean checked) | 设置 ToggleButton 是否选中 |
setTextOff(CharSequence textOff) | 设置 ToggleButton 关时显示的文本 |
setTextOn(CharSequence textOn) | 设置 ToggleButton 开时显示的文本 |
toggle() | 改变 ToggleButton 的开关状态 |
事件 | 说明 |
---|---|
CompoundButton.OnCheckedChangeListener | 当 ToggleButton 的开关状态改变时触发 |
允许我们在两个状态之间切换,有点类似于现在流行的滑动解锁
Switch (开关) 也继承自 Button
和 CompoundButton
,所以拥有它们的属性、方法和事件
不过 Switch
也拥有自己的属性,而且特别的多
属性 | 说明 |
---|---|
android:showText | 设置 on/off 的时候是否显示文字 |
android:splitTrack | 是否设置一个间隙,让滑块与底部图片分隔 |
android:switchMinWidth | 设置开关的最小宽度 |
android:switchPadding | 设置滑块内文字的间隔 |
android:switchTextAppearance | 设置开关的文字外观 |
android:textOff | 按钮没有被选中时显示的文字 |
android:textOn | 按钮被选中时显示的文字 |
android:textStyle | 文本的样式(普通,粗体,斜体,粗体) |
android:track | 底部的图片 |
android:thumb | 滑块的图片 |
android:typeface | 设置字体,默认支持这三种:sans, serif, monospace |
Switch
提供了一些方法用来改变或获取自身的状态和开关时的文本
方法 | 说明 |
---|---|
getTextOff() | 获取 Switch 关时显示的文本 |
getTextOn() | 获取 Switch 开时显示的文本 |
setChecked(boolean checked) | 设置 Switch 是否选中 |
setTextOff(CharSequence textOff) | 设置 Switch 关时显示的文本 |
setTextOn(CharSequence textOn) | 设置 Switch 开时显示的文本 |
toggle() | 改变 Switch 的开关状态 |
事件 | 说明 |
---|---|
CompoundButton.OnCheckedChangeListener | 当 Switch 的开关状态改变时触发 |
ProgressBar(进度条) 可以用来显示一个操作的进度,一般用于比较耗时的地方,比如下载进度条,比如加载等待
ProgressBar
有两种模式,确定性
和 不确定性的
,有两种外观模式,条形
和 圆形
,所以总共有四种,这涉及到两个属性
属性 | 说明 |
---|---|
android:indeterminate | 是否显示不确定模式,默认为 true |
style | ProgressBar 的外观样式 |
android:style
属性有以下几个值可以选择
属性 | 说明 |
---|---|
Widget.ProgressBar.Horizontal | |
Widget.ProgressBar.Small | |
Widget.ProgressBar.Large | |
Widget.ProgressBar.Inverse | |
Widget.ProgressBar.Small.Inverse | |
Widget.ProgressBar.Large.Inverse |
其他属性
属性 | 说明 |
---|---|
android:max | 进度条的最大值 |
android:progress | 进度条已完成进度值 |
android:progressDrawable | 设置轨道对应的Drawable对象 |
android:indeterminate | 如果设置成true,则进度条不精确显示进度 |
android:indeterminateDrawable | 设置不显示进度的进度条的Drawable对象 |
android:indeterminateDuration | 设置不精确显示进度的持续时间 |
android:secondaryProgress | 二级进度条,类似于视频播放的一条是当前播放进度,一条是缓冲进度,前者通过 progress 属性进行设置 |
方法 | 说明 |
---|---|
getMax() | 返回这个进度条的范围的上限 |
getProgress() | 返回进度 |
getSecondaryProgress() | 返回次要进度 |
incrementProgressBy(int diff) | 指定增加的进度 |
isIndeterminate() | 指示进度条是否在不确定模式下 |
setIndeterminate(boolean indeterminate) | 设置不确定模式下 |
SeekBar ( 拖动条 ) 控件一般用于音乐播放器或者视频播放器的音量控制或者播放进度控制
SeekBar 是 ProgressBar
的子类,所以 ProgressBar的属性都可以用
SeekBar 有以下几个简单的属性
属性 | 说明 |
---|---|
android:max ="100" | 滑动条的最大值 |
android:progress="60" | 滑动条的当前值 |
android:secondaryProgress="70" | 二级滑动条的进度 |
android:thumb = "@mipmap/sb_icon" | 滑块的 drawable |
SeekBar 内置了 SeekBar.OnSeekBarChangeListener 事件
该事件会触发三个方法
方法 | 说明 |
---|---|
onProgressChanged | 进度发生改变时会触发 |
onStartTrackingTouch | 按住 SeekBar 时会触发 |
onStopTrackingTouch | 放开 SeekBar 时触发 |