如何使用自定义View中的button关闭isCancelable为false的Anko alert?
如何关闭自定义View的Anko弹窗(isCancelable = false)
有两种简单的方法可以实现这个需求,我来给你一步步说明:
方法1:使用限定this引用弹窗实例
在Anko的alert lambda内部,this指向的是AlertDialog对象,所以你可以在按钮的点击回调里用this@alert来获取这个弹窗实例,然后调用dismiss()方法关闭它:
myAlert = alert { customView { verticalLayout { // 此处包含image、textView等组件 button("OK") { onClick { // 直接引用alert作用域内的Dialog实例 this@alert.dismiss() } } } } } myAlert.isCancelable = false myAlert.show()
方法2:保存show()返回的Dialog实例
alert()返回的是AlertDialog.Builder,调用它的show()方法会返回实际的AlertDialog对象。你可以把这个对象保存下来,然后在按钮点击时调用它的dismiss():
var myDialog: AlertDialog? = null myAlert = alert { customView { verticalLayout { // 此处包含image、textView等组件 button("OK") { onClick { myDialog?.dismiss() } } } } } myAlert.isCancelable = false myDialog = myAlert.show()
两种方法都能解决你的问题,第一种更简洁,不需要额外的变量;第二种适合需要在其他地方也控制弹窗的场景。
内容的提问来源于stack exchange,提问作者ajonno
相关产品推荐
相关产品推荐

