kotlin常見的幾種dialog樣式

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()
    }

}

輸出結果:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章