You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使Anko中的indeterminateProgressDialog不可取消?

解决Anko中indeterminateProgressDialog不可取消的问题

嘿,这个问题我之前也踩过坑!Anko的indeterminateProgressDialog确实没有像alert那样直接暴露isCancelable属性,但别担心——它底层其实是基于Android原生的ProgressDialog实现的,我们直接操作原生对象就能搞定。

具体实现方法

当你调用indeterminateProgressDialog()时,它会直接返回一个Android原生的ProgressDialog实例,所以我们可以直接调用原生的setCancelable()方法来禁止取消:

// 创建进度对话框并设置不可取消
val loadingDialog = indeterminateProgressDialog(message = "正在加载,请稍候...")
loadingDialog.setCancelable(false)

// 可选:如果不想让用户点击对话框外部区域取消,再加上这行
loadingDialog.setCanceledOnTouchOutside(false)

也可以用Kotlin的apply函数写得更简洁:

indeterminateProgressDialog("正在加载,请稍候...").apply {
    setCancelable(false)
    setCanceledOnTouchOutside(false)
}

补充说明

  • setCancelable(false)会同时禁止Back键和外部点击两种取消方式;
  • 如果只想要禁止外部点击、但保留Back键取消的功能,只需要调用setCanceledOnTouchOutside(false)即可;
  • Anko的这类UI扩展函数大多都是对原生Android控件的封装,遇到类似属性缺失的问题,都可以先看看它返回的对象是不是原生控件,直接调用原生方法就能解决。

内容的提问来源于stack exchange,提问作者Albert Gao

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 04:22:41