Android简单控件使用
- 1. 使用按钮控件
- 1.1 Button使用
- 1.2 CheckBox使用
- 1.3 RadioButton
- 2.图文控件
- 2.1 TextView使用
- 2.2 ImageView使用
- 2.3 EditView使用
1. 使用按钮控件
Android常用按钮有Button、CheckBox、RadioButton
1.1 Button使用
Button设置监听三种方式
方式一 匿名函数
btn_click_anonymos.setOnClickListener { v ->
//Kotlin对变量进行类型转换关键字as
toast("ᅩڋԧഴկғ${(v as Button).text}")
}
方式二 内部类
private inner class MyClickListener : View.OnClickListener {
override fun onClick(v: View) {
toast("ᅩڋԧഴկғ${(v as Button).text}")
}
}
btn_click_inner.setOnClickListener(MyClickListener())
方式三 接口实现
class ButtonClickActivity : AppCompatActivity(), OnClickListener {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
......
btn_click_interface.setOnClickListener(this)
......
}
override fun onClick(v: View) {
if (v.id == R.id.btn_click_interface) {
toast("ᅩڋԧഴկғ${(v as Button).text}")
}
}
}
1.2 CheckBox使用
绑定监听实现
class CheckboxActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
......
ck_select.isChecked = false //默认是未选中状态
ck_select.setOnCheckedChangeListener { buttonView, isChecked ->
tv_select.text = "您${if(isChecked) "Checked" else "UnChecked" } 了复选框"
}
.....
}
1.3 RadioButton
绑定监听实现
class RadioButtonActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
......
rg_sex.setOnCheckedChangeListener { group, checkedId ->
tv_sex.text = when (checkedId) {
R.id.rb_male -> "male is checked"
R.id.rb_female -> "female is checked"
else -> ""
}
}
......
}
}
2.图文控件
常用图文控件主要包括TextView、ImageView及EditText
2.1 TextView使用
tv_marquee.text = "这是一条长文本,这是一条长文本,这是一条长文本,这是一条长文本,这是一条长文本,这是一条长文本"
tv_marquee.textSize = 17f
tv_marquee.setTextColor(Color.BLACK)
tv_marquee.setBackgroundColor(Color.WHITE)
tv_marquee.gravity = Gravity.LEFT or Gravity.CENTER //左对齐且垂直居中
tv_marquee.ellipsize = TextUtils.TruncateAt.MARQUEE //从右向左滚动的跑马灯
tv_marquee.setSingleLine(true) //跑马灯效果务必设置SingleLine单行显示
tv_marquee.setOnClickListener {
bPause = !bPause
tv_marquee.isFocusable = if (bPause) false else true
tv_marquee.isFocusableInTouchMode = if (bPause) false else
true
}
注意:上面设置TextView的gravity属性时,使用到了或运算符,请参考位运算相关章节
2.2 ImageView使用
ImageView相关方法
- setImageDrawable: 设置图片Drawable对象
- setImageResource:设置图片的资源ID
- setImageBitmap:设置图片的位图对象
- setScaleType: 设置图片拉伸类型
下面表格对图片拉伸类型取值做说明
ScaleType类的拉伸类型 | 说明 |
ScaleType.FIT_XY | 拉伸图片使之正好填满视图(图片可能被拉伸变形) |
ScaleType.FIT_START | 拉伸图片使之位于视图上部 |
ScaleType.FIT_CENTER | 拉伸图片使之位于视图中间 |
ScaleType.FIT_END | 拉伸图片使之位于视图下部 |
ScaleType.CENTER | 保持图片原尺寸,使之位于视图中间 |
ScaleType.CENTER_CROP | 拉伸图片使之充满视图,并位于视图中间 |
ScaleType.CENTER_INSIDE | 使图片位于视图中间(只压不拉)。当图片尺寸大于View时,centerInside等同于fitCenter,反之,等同于center |
2.3 EditView使用
class EditTextActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_edit_text)
/*不能直接给EditText控件的text属性赋值否则报错Editable与String类型不匹配
* 只能调用setText方法对EditText设置文本
*/
et_phone.setText("");
//显示明文密码
et_phone.inputType = InputType.TYPE_CLASS_NUMBER
//隐藏密码
et_phone.inputType = InputType.TYPE_TEXT_VARIATION_VISIBLE_PASS
WORD
//给编辑框添加文本变化监听器
et_phone.inputType = InputType.TYPE_CLASS_TEXT or InputType.TYPE_TEXT_VARIATION_PASSWORD
//给编辑框添加文本变化监听器
et_phone.addTextChangedListener(EditWatcher())
}
private inner class EditWatcher : TextWatcher {
override fun beforeTextChanged(s: CharSequence, start: Int, cou
nt: Int, after: Int) {}
override fun onTextChanged(s: CharSequence, start: Int, before:
Int, count: Int) {}
override fun afterTextChanged(s: Editable) {
var str = s.toString()
//发现输入回车符或换行符
if (str.indexOf("\r") >= 0 || str.indexOf("\n") >= 0) {
//去掉回车符或换行符
str = str.replace("\r", "").replace("\n", "")
}
if (str.length >= 11) {
tv_phone.text = "您输入的手机号码是:$str"
}
}
}