设计和代码切换,通常状况下,咱们 UI 布局都是先拖再细调整,也就是先用设计默认拖出一个大概的布局,而后用代码来微调html
1. TextView 文本框
TextView 继承于 Viewjava
1.1 经常使用属性
属性 | 说明 |
---|---|
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
属性 | 说明 |
---|---|
android:singleLine | 设置是否单行显示 |
android:ellipsize | 设置文字超出控件宽度时的显示方式,值有 end 显示结尾部分 marquee 跑马灯滚动显示 middle 显示中间部分 none 默认 start 显示开始部分 |
android:marqueeRepeatLimit | 设置跑马灯重复次数,值能够是如下几种 marquee_forever 重复 具体的数字,好比 2 |
识别连接效果:web
android:autoLink
属性用于设置 TextView 是否识别连接类型和设置可识别的连接类型app
android:autoLink
的值有如下几种ide
值 | 说明 |
---|---|
none | 不识别,禁用识别 |
all | 能够识别所有,也就是下面四种 |
电子邮件 | |
map | 地图 |
phone | 一串数字,或者以 tel:// 开头的电话号码 |
web | 网页地址,以 http(s):// 开头的网址 |
设置 TextView 字间距布局
属性 android:textScaleX
控制字体水平方向的缩放,默认值 1.0f,类型值是 float字体
如: setScaleX(2.0f);
设置 TextView 行间距this
Android TextView 默认显示中文时会比较紧凑,为了让每行保持的行间距,能够设置以下属性spa
属性 | 说明 |
---|---|
android:lineSpacingExtra | 设置行间距,如"3dp" |
android:lineSpacingMultiplier | 设置行间距的倍数,如 "1.2" |
如:setLineSpacing(1.5)
1.2 经常使用方法
void append(CharSequence text); //增长文字
CharSequence getText(); // 获取文章文字
int getTextSize();
int length();
2. EditText 输入框
EditText 继承于 TextView
2.1 经常使用属性
属性 | 说明 |
---|---|
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" // 时间键盘
2.2 经常使用方法
TextView 的方法,EditText 都有
.setText("success");
3. ImageView 图像视图
3.1 经常使用属性
ImageView 有 2中属性,分为为: src, backgroud,他们之间的区别是:
- background 一般指的都是 背景, 而 src 指的是 内容
- 当使用 src 填入图片时, 是按照图片大小直接填 ,不会进行拉伸。而使用 background 填入图片,则是会根据 ImageView 给定的宽度来进行 拉伸
设置缩小放大的大小
android:adjustViewBounds | 设置缩放时是否保持原图长宽比 |
android:maxHeight | 设置 ImageView 的最大高度 |
android:maxWidth | 设置 ImageView 的最大宽度 |
3.2 经常使用方法
@Override public void onClick(View view) { switch (view.getId()) { case R.id.button: imageView.setImageResource(R.drawable.image_2); // 修改图片 break; default: break; } }
4. Button 按钮
4.1 经常使用属性
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
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed="true" android:drawable="@drawable/btn_pressed"/> <item android:state_enabled="false" android:drawable="@drawable/btn_disabled"/> <item android:drawable="@drawable/btn_normal"/> </selector>
4.2 监听方法
1. 一个按钮的监听方法
button.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { //点击Button会改变edittext的文字为"点击了Button" edittext.setText("点击了Button"); } });
2. 继承于接口 OnClickListener 的监听方法
public class MainActivity extends Activity implements OnClickListener { private EditText edittext; private Button button; private Button button2; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); edittext=(EditText) findViewById(R.id.edit_text); button = (Button) findViewById(R.id.button); button2 = (Button) findViewById(R.id.button2); button.setOnClickListener(this); button2.setOnClickListener(this); } @Override //用switch区分是哪一个id public void onClick(View v) { switch (v.getId()){ case R.id.button: edittext.setText("点击了Button"); break; case R.id.button2: edittext.setText("点击了Button2"); break; } } }
5. RadioButton 单选按钮
5.1 经常使用属性
RadioButton 单选按钮就是只可以选中一个,因此咱们须要把 RadioButton 放到 RadioGroup 按钮组中,从而实现单选功能
RadioButton
继承自 Button
,因此拥有 Button
的全部公开属性和方法
RadioButton
只有两个状态,选中与未选中,因此也就只有一个属性是最重要的,那就是 android:checked
属性 | 说明 |
---|---|
android:checked | 设置或获取 RadioButton 的选中状态 |
若是 RadioButton
未选中,那么点击它可让它选中,但反过来是不能够的,就是不能从选中状态到未选中状态
5.2 监听方法
RadioGroup 是单选组合框,用于 将 RadioButton 框起来。在多个 RadioButton被 RadioGroup 包含的状况下,同一时刻只能够选择一个 RadioButton,并用 setOnCheckedChangeListener 来对 RadioGroup 进行监听。
//调用setOnCheckedChangeListener来对RadioGroup进行监听的代码 radiogroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { @Override public void onCheckedChanged(RadioGroup group, int checkedId) { if(checkedId == radiobutton1.getId()){ textView.setText("北京"); }else if(checkedId == radiobutton2.getId()){ textView.setText("上海"); } } });
6. RadioGroup 单选按钮组
6.1 经常使用属性
要实现 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 中的某个选项被选中时触发 |
7. CheckBox 复选框
7.1 经常使用属性
Android CheckBox (复选框) 继承自 Button
,能够说是只有两种状态的按钮 (选中或未选中状态)
能够把多个 CheckBox
放在一块儿实现同时选中多项,可是,记住,它们之间没有任何关系,一个的选中并不会影响另外一个选中或者不选中
CheckBox
除了从 Button
继承而来的属性外,没有本身的属性,但从 CompoundButton
继承了一个属性 android:checked
用于表示是否选中
属性 | 说明 |
---|---|
android:checked | 设置或者获取 CheckBox 是否选中 |
7.2 监听方法
CheckBox
提供了几个方法和事件用于设置或者获取自身是否选中状态
方法 | 说明 |
---|---|
isChecked() | 判断自身是否选中 |
setChecked(boolean checked) | 设置自身是否选中状态 |
事件 | 说明 |
---|---|
OnCheckedChangeListener | 选中状态改变监听器,当自身选中状态变化时会触发这个事件 |
8. ToggleButton 开关按钮
8.1 经常使用属性
ToggleButton (开关按钮) 容许咱们在两个状态之间切换,有点相似于电灯的开关
ToggleButton
和 CheckBox
同样都继承自 CompoundButton
,因此都有 Button
的属性和方法,又有 CompoundButton
的属性 android:checked
属性 | 说明 |
---|---|
android:disabledAlpha | 当 ToggleButton 处于 禁用 时的透明度 |
android:textOff | 当 ToggleButton 处于 关 时的文本,如:android:textOff="关闭" |
android:textOn | 当 ToggleButton 处于 开 时的文本 |
8.2 监听方法
ToggleButton
提供了一些方法用来改变或获取自身的状态和开关时的文本
方法 | 说明 |
---|---|
getTextOff() | 获取 ToggleButton 关时显示的文本 |
getTextOn() | 获取 ToggleButton 开时显示的文本 |
setChecked(boolean checked) | 设置 ToggleButton 是否选中 |
setTextOff(CharSequence textOff) | 设置 ToggleButton 关时显示的文本 |
setTextOn(CharSequence textOn) | 设置 ToggleButton 开时显示的文本 |
toggle() | 改变 ToggleButton 的开关状态 |
事件 | 说明 |
---|---|
CompoundButton.OnCheckedChangeListener | 当 ToggleButton 的开关状态改变时触发 |
9. Switch 开关
9.1 经常使用属性
容许咱们在两个状态之间切换,有点相似于如今流行的滑动解锁
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 |
9.2 监听方法
Switch
提供了一些方法用来改变或获取自身的状态和开关时的文本
方法 | 说明 |
---|---|
getTextOff() | 获取 Switch 关时显示的文本 |
getTextOn() | 获取 Switch 开时显示的文本 |
setChecked(boolean checked) | 设置 Switch 是否选中 |
setTextOff(CharSequence textOff) | 设置 Switch 关时显示的文本 |
setTextOn(CharSequence textOn) | 设置 Switch 开时显示的文本 |
toggle() | 改变 Switch 的开关状态 |
事件 | 说明 |
---|---|
CompoundButton.OnCheckedChangeListener | 当 Switch 的开关状态改变时触发 |
10. ProgressBar 进度条
10.1 经常使用属性
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 属性进行设置 |
10.2 监听方法
方法 | 说明 |
---|---|
getMax() | 返回这个进度条的范围的上限 |
getProgress() | 返回进度 |
getSecondaryProgress() | 返回次要进度 |
incrementProgressBy(int diff) | 指定增长的进度 |
isIndeterminate() | 指示进度条是否在不肯定模式下 |
setIndeterminate(boolean indeterminate) | 设置不肯定模式下 |
11. SeekBar ( 拖动条 ) 控件
11.1 经常使用属性
SeekBar ( 拖动条 ) 控件通常用于音乐播放器或者视频播放器的音量控制或者播放进度控制
SeekBar 是 ProgressBar
的子类,因此 ProgressBar的属性均可以用
SeekBar 有如下几个简单的属性
属性 | 说明 |
---|---|
android:max ="100" | 滑动条的最大值 |
android:progress="60" | 滑动条的当前值 |
android:secondaryProgress="70" | 二级滑动条的进度 |
android:thumb = "@mipmap/sb_icon" | 滑块的 drawable |
11.2 监听方法
SeekBar 内置了 SeekBar.OnSeekBarChangeListener 事件
该事件会触发三个方法
方法 | 说明 |
---|---|
onProgressChanged | 进度发生改变时会触发 |
onStartTrackingTouch | 按住 SeekBar 时会触发 |
onStopTrackingTouch | 放开 SeekBar 时触发 |