请求:将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
相关产品推荐
相关产品推荐

