入门级测试Kotlin实现PopWindow弹窗代码

入门级测试Kotlin PopWindow弹窗代码

文件名称:MainActivity.Kt

package com.example.alert

import android.app.Dialog
import android.content.DialogInterface
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.view.ViewGroup
import android.widget.Button
import android.widget.GridView
import android.widget.PopupWindow
import android.widget.Toast
import androidx.appcompat.app.AlertDialog

class MainActivity : AppCompatActivity() {

    private var btn : Button? = null
    private var btnPopupWindow :Button? = null

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

        //设定按钮
        btn = findViewById<Button>(R.id.btnAlert)
        btn?.setOnClickListener {

            //告警窗口
            val alertDialog = AlertDialog.Builder(this@MainActivity)
            alertDialog.apply {
                setTitle("Hello")  //设置标题
                setMessage("你说呢?")
                setPositiveButton("确定",
                    DialogInterface.OnClickListener{ _, _ ->
                    Toast.makeText(this@MainActivity,"你点击了:确定",Toast.LENGTH_SHORT).show()
                })
                setNegativeButton("取消",
                    DialogInterface.OnClickListener { _, _ ->
                    Toast.makeText(this@MainActivity,"你点击了:取消",Toast.LENGTH_SHORT).show()
                })
                setIcon(R.drawable.ic_baseline_android_24)
                show()
            }

        }

		//弹窗部分开始
        btnPopupWindow = findViewById<Button>(R.id.btnPopWindow)
        btnPopupWindow?.setOnClickListener {

            PopupWindow().apply {
                //入口参数配置
                contentView = layoutInflater.inflate(R.layout.popwindow_layout,null)
                width = ViewGroup.LayoutParams.WRAP_CONTENT
                height = ViewGroup.LayoutParams.WRAP_CONTENT
                isFocusable = true

                //设置按钮
                val btnPopupWindow = contentView.findViewById<Button>(R.id.popBtn)
                btnPopupWindow.setOnClickListener {
                    Toast.makeText(this@MainActivity,"退出弹窗!!",Toast.LENGTH_SHORT).show()
                    dismiss()
                }

                //显示在按钮的下方
                showAsDropDown(it)

            }
			
			//这部分注释代码与上面效果一致,除了没添加按钮
//            var popupWindow = PopupWindow(
//                layoutInflater.inflate(R.layout.popwindow_layout,null),
//                ViewGroup.LayoutParams.WRAP_CONTENT,
//                ViewGroup.LayoutParams.WRAP_CONTENT,
//                true
//            )
//
//
//            popupWindow.apply {
//                showAsDropDown(it)
//            }
        }

    }


}

文件名称:popwindow_layout.xml

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

    <TextView
        android:text="你好,我是弹窗!!"
        android:textSize="23sp"
        android:textAlignment="center"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>

    <Button
        android:id="@+id/popBtn"
        android:text="你好,我是弹窗按钮!!"
        android:textSize="23sp"
        android:textAlignment="center"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>

</LinearLayout>

总结:使用Kotlin可以简化代码,代码量远比Java要跟小一些,使用内置函数apply灵活性强,代码更加容易看懂。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值