对话框小例子

普通对话框

fun danxuan(view: View) {

        var dialog = AlertDialog.Builder(this)
        dialog.setTitle("黄立志帅不帅")
        dialog.setMessage("请选择")
        dialog.setNegativeButton("确定", object : DialogInterface.OnClickListener {

            override fun onClick(dialog: DialogInterface?, which: Int) {
                Toast.makeText(this@MainActivity, "谢谢", Toast.LENGTH_SHORT).show()

            }

        })
        dialog.setPositiveButton("确定", object : DialogInterface.OnClickListener {

            override fun onClick(dialog: DialogInterface?, which: Int) {
                Toast.makeText(this@MainActivity, "谢谢", Toast.LENGTH_SHORT).show()

            }

        })
        dialog.create().show()
    }

这里getapplicationcontext改为this 原因:
用getapplicationcontext不知道放那个activity

单选对话框

private fun singleDialog() {
        val builder = AlertDialog.Builder(this@MainActivity)
        builder.setTitle("单选对话框")
        val items = arrayOf("男", "女") // 创建一个存放选项的数组
        val checkedItems = booleanArrayOf(true, false) // 存放选中状态,true为选中
        // ,false为未选中,和setSingleChoiceItems中第二个参数对应
        // 为对话框添加单选列表项
        // 第一个参数存放选项的数组,第二个参数存放默认被选中的项,第三个参数点击事件
        builder.setSingleChoiceItems(items, 0, object : DialogInterface.OnClickListener {
            override fun onClick(arg0: DialogInterface?, arg1: Int) {
                for (i in checkedItems.indices) {
                    checkedItems[i] = false
                }
                checkedItems[arg1] = true
            }
        })
        builder.setNegativeButton("取消", object : DialogInterface.OnClickListener {
            override fun onClick(arg0: DialogInterface, arg1: Int) {
                // TODO Auto-generated method stub
                arg0.dismiss()
            }
        })
        builder.setPositiveButton("确定", object : DialogInterface.OnClickListener {
            override fun onClick(arg0: DialogInterface?, arg1: Int) {
                // TODO Auto-generated method stub
                var str = ""
                for (i in checkedItems.indices) {
                    if (checkedItems[i]) {
                        str = items[i]
                    }
                }
                Toast.makeText(this@MainActivity, "您选择了$str", Toast.LENGTH_SHORT).show()
            }
        })
        builder.create().show()
    }

多选对话框

    private fun multipleDialog() {
        val builder = AlertDialog.Builder(this@MainActivity)
        builder.setTitle("多选对话框")
        val items = arrayOf("数学", "语文", "英语", "政治") // 存放选项的数组
        val checkedItems = booleanArrayOf(false, true, false, false)

        // 第一个参数选项,第二个参数选项的状态,第三个点击事件
        builder.setMultiChoiceItems(items, checkedItems
        ) { arg0, arg1, arg2 -> // TODO Auto-generated method stub
            if (arg2) {
                checkedItems[arg1] = true
            } else {
                checkedItems[arg1] = false
                Toast.makeText(this@MainActivity, "您取消了" + items[arg1], Toast.LENGTH_SHORT).show()
            }
        }
        builder.setNegativeButton("取消", object : DialogInterface.OnClickListener {
            override fun onClick(arg0: DialogInterface, arg1: Int) {
                // TODO Auto-generated method stub
                arg0.dismiss()
            }
        })
        builder.setPositiveButton("确定", object : DialogInterface.OnClickListener {
            override fun onClick(arg0: DialogInterface?, arg1: Int) {
                // TODO Auto-generated method stub
                var str = ""
                for (i in checkedItems.indices) {
                    if (checkedItems[i]) {
                        str = str + items[i]
                    }
                }
                Toast.makeText(this@MainActivity, "您选择了$str", Toast.LENGTH_SHORT).show()
            }
        })
        builder.create().show()
    }

自定义对话框

private fun layDialog() {
        val builder: AlertDialog.Builder = AlertDialog.Builder(this@MainActivity)

    // 创建一个view,并且将布局加入view中
    val view: View = LayoutInflater.from(this@MainActivity).inflate(
            R.layout.dialog_edt, null, false)
    // 将view添加到builder中
    builder.setView(view)
    // 创建dialog
    val dialog = builder.create()
    // 初始化控件,注意这里是通过view.findViewById
    val edt = view.findViewById<EditText>(R.id.edt)
    val confirm = view.findViewById<Button>(R.id.confirm)
    val cancel = view.findViewById<Button>(R.id.cancel)
    // 设置button的点击事件及获取editview中的文本内容
    confirm.setOnClickListener(View.OnClickListener { // TODO Auto-generated method stub
        val str = if (edt.text == null) "" else edt.text
                .toString()
        Toast.makeText(this,str, Toast.LENGTH_SHORT).show()
    })
    // 取消按钮
    cancel.setOnClickListener(View.OnClickListener { // TODO Auto-generated method stub
        dialog.dismiss()
    })
    dialog.show()
}
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <EditText
        android:id="@+id/edt"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="10dp"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"></EditText>

    <Button
        android:id="@+id/cancel"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="取消"
        app:layout_constraintEnd_toStartOf="@+id/guideline"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/edt" />

    <Button
        android:id="@+id/confirm"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="确认"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toEndOf="@+id/cancel"
        app:layout_constraintTop_toBottomOf="@+id/edt" />

    <androidx.constraintlayout.widget.Guideline
        android:id="@+id/guideline"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        app:layout_constraintGuide_percent="0.5" />

</androidx.constraintlayout.widget.ConstraintLayout>

自定义进度条对话框:

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
    }
    fun danxuan(view: View) {
        progressDialog()
    }
    private fun progressDialog(){
        val dialogFragment = ProgressFragmentDialog()
        dialogFragment.show(supportFragmentManager, "progress")

    }
}
class ProgressFragmentDialog : DialogFragment() {
    override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
        return super.onCreateDialog(savedInstanceState)
    }

    override fun onCreateView(
        inflater: LayoutInflater,
        container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {
        dialog!!.requestWindowFeature(Window.FEATURE_NO_TITLE) //去掉Dialog的标题部分
        dialog!!.window?.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT)) //dialog背景色变为透明
        //点击区域外弹窗不消失
        dialog!!.setCanceledOnTouchOutside(false);
        val view = inflater.inflate(R.layout.dialog_edt, null)
        val cancle = view.findViewById<Button>(R.id.cancle)
        cancle.setOnClickListener {
            dialog!!.dismiss()
        }
        return view
    }
}

<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity = "center"
    android:orientation="vertical">

    <Button
        android:id="@+id/cancle"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="取消"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.498"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.525"></Button>

    <ProgressBar
        android:id="@+id/progressbar"
        style="?android:attr/progressBarStyleHorizontal"
        android:layout_width="300dp"
        android:layout_height="3dp"
        android:layout_marginBottom="56dp"
        android:max="300"
        android:progress="100"
        app:layout_constraintBottom_toTopOf="@+id/cancle"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.486"
        app:layout_constraintStart_toStartOf="parent"></ProgressBar>

</androidx.constraintlayout.widget.ConstraintLayout>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值