kotlin安卓:每天一个组件 常用对话框

今天用到的是对话框(前排提示,导包时候注意,是原生包,不是V7的本文)

看看所有的按钮:null

这里放一个代码循环设置监听器:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
val dia_1 = findViewById<Button>(R.id.btn_dia1)        
val dia_2 = findViewById<Button>(R.id.btn_dia2)
val dia_3 = findViewById<Button>(R.id.btn_dia3)
val dia_4 = findViewById<Button>(R.id.btn_dia4)
val dia_5 = findViewById<Button>(R.id.btn_dia5)
val dia_6 = findViewById<Button>(R.id.btn_dia6)
val arr_btn = arrayOf<Button>(dia_1,dia_2,dia_3,dia_4,dia_5,dia_6)
for(i in arr_btn.indices){
arr_btn[i].setOnClickListener{
startBtn(i+1)//注意下标是0开始的,后面用得是when从1开始
}
}
when(n){
1 -> {


}
·····
}
6 -> {
val dialog = AlertDialog.Builder(this@Main9Activity)
dialog.setTitle("这是简单列表").setItems(items){
_,which ->
tips("你点击的是:${items[which]}")
}.create().show()
}

null

首先说一下步骤:

一个按钮或者事件,启动对话框,对话框创建步骤如下:

1.通过AlertDialog.Builder(this)构造一个dialog对象。

2.通过dialog的方法设置属性,下面会具体介绍。

3.然后用create()方法生成,最后和Toast一样用show()调出啦。

kotlin可以用点语法直接设置属性,下面是最简单的一个对话框。

@1那传入一个lambda表达式

setNegativeButton(“文”,{dialog,which -> xxx}),简化以后移到后面了

这里_和_是说明后面用不到这个参数

全文用了一个数组items是一个字符串数组,和一个封装的Toast方法tips(tip:String),略了哈

1
2
3
4
5
6
7
8
var dialog = AlertDialog.Builder(this@Main9Activity)
.setTitle("这是简单对话框!")
//这里说一下,设置取消按钮,这里传入一个lambda表达式@1
.setNegativeButton("cancel"){
_,_ ->
tips("取消:简单对话框")}
//设置内容文本
.setMessage("这是简短的内容").create().show()

null

效果图:

null

接下来开始看看背的对话框:

列表对话框:

1
2
3
4
5
6
val items = arrayOf("1123","123234","11313")   
val dialog = AlertDialog.Builder(this@Main9Activity)
dialog.setTitle("这是简单列表").setItems(items){
_,which ->
tips("你点击的是:${items[which]}")
}.create().show()

null

预览图片:这里可以利用which获取数组下标,去做其他的事情。

null

接下来是单选对话框:代码里items右面的参数是设置第几个为默认选中。

1
2
3
4
5
6
7
val dialog1 = AlertDialog.Builder(this@Main9Activity)
dialog1.setSingleChoiceItems(items,1){
dialog, which ->
val text = "你选中的是${items[which]}"
tips(text)

}.create().show()

null

预览:单选图找不到了,用多选图吧,区别就是前面的选择图标

null

下面是多选代码:参数,数组,整形的boolean代表,默认哪个选中。,最后是根视图。

1
2
3
val dialog = AlertDialog.Builder(this@Main9Activity)
dialog.setMultiChoiceItems(items,booleanArrayOf(true,false,true),null)
.create().show()

null

下面上经常自定义用得两个:

首先是adapter对话框:这里可以传入一个adapter,现在用得是arrayadapter可以用simpleadapter

1
2
3
4
val dialog = AlertDialog.Builder(this@Main9Activity)
dialog.setTitle("我是自定义对话框")
.setAdapter(ArrayAdapter(this@Main9Activity,R.layout.array_list,items),null)
.create().show()

null

预览:没有弄样式,看代码就知道啦、

null

最后是很强大的自定义View对话框:首先引入一个布局文件,然后用setView()设置。如果想获取lay内部控件,首先获取lay对象,用findViewById就好啦。

1
2
3
4
5
6
7
8
9
10
11
val lay = layoutInflater.inflate(R.layout.login,null)

val dialog = AlertDialog.Builder(this@Main9Activity)
dialog.setTitle("这是自定义view")
.setView(lay).create().show()
lay.findViewById<Button>(R.id.login_ok).setOnClickListener{
tips("你点击了确定")
}
lay.findViewById<Button>(R.id.login_cancel).setOnClickListener{
tips("你点击了取消")
}

null

预览:好了,常用对话框,用kotlin方式写完了。

null