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

请求:将Android ProgressDialog设置为屏幕居中显示

解决Android ProgressDialog居中显示的问题

你已经尝试设置GravityFlags.Center但没达到预期效果对吧?别着急,咱们调整下代码就能搞定这个居中问题!

问题分析

你调用了dialog.Window.SetGravity(GravityFlags.Center)但ProgressDialog仍靠左显示,核心原因是Dialog的Window布局参数(LayoutParams)没有明确配置宽高——默认情况下,系统可能没有给Dialog的Window分配合适的尺寸,导致Gravity的居中逻辑无法正常生效。

修正后的完整代码

在你现有代码的基础上,添加Window布局参数的配置,确保宽高自适应且强制居中:

Dialog _ProgressDialog; 
var dialog = new Android.App.ProgressDialog(activity); 

// 关键:配置Window的布局参数,确保居中+宽高自适应
var windowParams = dialog.Window.Attributes;
windowParams.Gravity = GravityFlags.Center;
windowParams.Width = WindowManagerLayoutParams.WrapContent;
windowParams.Height = WindowManagerLayoutParams.WrapContent;
dialog.Window.Attributes = windowParams;

dialog.Indeterminate = true; 
dialog.SetCancelable(false); 
dialog.SetCanceledOnTouchOutside(false); 
dialog.SetProgressStyle(ProgressDialogStyle.Spinner); 
_ProgressDialog = dialog;

// 务必在所有配置完成后调用Show()
_ProgressDialog.Show();

额外注意事项

  • 所有Window相关的配置必须在dialog.Show()前完成,否则修改不会生效;
  • 如果你的Activity使用了自定义主题,检查主题中是否包含android:windowGravity这类可能影响Dialog位置的属性,可暂时注释测试;
  • 要是需要更个性化的样式,也可以通过dialog.SetContentView()加载自定义布局文件,在布局里直接将进度控件设置为居中,这种方式灵活性更高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:58:28