kotlin常见的几种dialog样式

本文详细介绍了在Kotlin中如何实现和使用各种Dialog样式,包括基本对话框、自定义布局对话框、进度对话框等,针对Android开发提供实用技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

main

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello World!" />

    <Button
        android:id="@+id/btn_click"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="点击事件" />

    <Button
        android:id="@+id/btn_dialog1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="dialog弹框-普通对话框"
        android:textAllCaps="false" />

    <Button
        android:id="@+id/btn_dialog2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="dialog弹框-列表对话框"
        android:textAllCaps="false" />

    <Button
        android:id="@+id/btn_dialog3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="dialog弹框-选择对话框"
        android:textAllCaps="false" />
</LinearLayout>

 

activity

package com.example.zkotlin

import android.content.DialogInterface
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
import android.view.View
import androidx.appcompat.app.AlertDialog
import kotlinx.android.synthetic.main.activity_main.*

class MainActivity : AppCompatActivity(), View.OnClickListener {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        btn_click.setOnClickListener(this)
        btn_dialog1.setOnClickListener(this)
        btn_dialog2.setOnClickListener(this)
        btn_dialog3.setOnClickListener(this)
    }

    override fun onClick(v: View?) {
        when (v!!.id) {
            R.id.btn_click -> {
                Log.e("TAG", "click button")
            }
            R.id.btn_dialog1 -> {
                getDialog();
            }
            R.id.btn_dialog2 -> {
                getItemDialog();
            }
            R.id.btn_dialog3 -> {
                getSelectDialog();
            }
        }
    }

    private fun getSelectDialog() {
        var sex : String = "男";
        val array2 = arrayOf("男", "女")
        val builder = AlertDialog.Builder(this)
        builder.setTitle("title")
        builder.setSingleChoiceItems(array2, 1) { dialog, which ->
            sex = array2[which]
            Log.e("TAG", "select ${array2[which]}")
        }
        val dialogClickListener = DialogInterface.OnClickListener { _, which ->
            when (which) {
                DialogInterface.BUTTON_POSITIVE -> {
                    Log.e("TAG", "click yes,$sex")
                }
                DialogInterface.BUTTON_NEGATIVE -> {
                    Log.e("TAG", "click no,$sex")
                }
            }
        }
        builder.setPositiveButton("YES", dialogClickListener)
        builder.setNegativeButton("No", dialogClickListener)
        builder.create().show();
    }

    private fun getDialog() {
        val builder = AlertDialog.Builder(this);
        builder.setTitle("title")
        builder.setMessage("message")

        val dialogClickListener = DialogInterface.OnClickListener { _, which ->
            when (which) {
                DialogInterface.BUTTON_POSITIVE -> {
                    Log.e("TAG", "click yes")
                }
                DialogInterface.BUTTON_NEGATIVE -> {
                    Log.e("TAG", "click no")
                }
            }
        }
        builder.setPositiveButton("YES", dialogClickListener)
        builder.setNegativeButton("No", dialogClickListener)
        builder.create().show();
    }

    private fun getItemDialog() {
        val array1 = arrayOf("张飞", "赵云", "刘备", "孙权")
        val builder = AlertDialog.Builder(this);
        builder.setTitle("title")
        builder.setIcon(R.mipmap.ic_launcher)
        val dialogClickListener = DialogInterface.OnClickListener { dialog, which ->
            Log.e("TAG", "click ${array1[which]}")
        }
        builder.setItems(array1, dialogClickListener)
        builder.create().show()
    }

}

输出结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值