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

无法正确添加ActivityIndicator,附符合预期的CreateRegisterView函数代码

嘿,我来帮你捋一捋这两个问题的解决方案!

问题1:无法正确添加ActivityIndicator

我猜你大概率是在布局层级、属性配置或者显示时机上踩坑了。这里给你一套靠谱的实现步骤:

  • 首先,确保你的ActivityIndicator被放在正确的布局容器里,如果是要覆盖整个页面,推荐用AbsoluteLayout作为根容器,把指示器放在最上层
  • 一定要设置IsRunning="true"才会显示,另外可以搭配IsVisible来灵活控制显示/隐藏状态
  • 给指示器设置合适的尺寸和位置,比如要居中显示的话,记得用比例布局参数

举个完整的示例代码:

// 假设根容器是AbsoluteLayout
var absoluteLayout = new AbsoluteLayout();

// 先添加你的原有内容(比如你代码里的content)
absoluteLayout.Children.Add(content);

// 添加ActivityIndicator
var activityIndicator = new ActivityIndicator
{
    Color = Color.Black,
    IsRunning = true,
    VerticalOptions = LayoutOptions.Center,
    HorizontalOptions = LayoutOptions.Center
};
AbsoluteLayout.SetLayoutFlags(activityIndicator, AbsoluteLayoutFlags.PositionProportional);
AbsoluteLayout.SetLayoutBounds(activityIndicator, new Rectangle(0.5f, 0.5f, AbsoluteLayout.AutoSize, AbsoluteLayout.AutoSize));
absoluteLayout.Children.Add(activityIndicator);

如果是要在异步操作(比如网络请求)时显示,记得在操作开始时把IsRunning设为true,结束后再设为false哦。

问题2:CreateRegisterView函数代码优化建议

看你贴的代码末尾好像截断了(AbsoluteLayo...),先给你补全正确的SetLayoutBounds写法,再提几个小优化点:

  1. 补全截断的代码:
// 你原来的代码末尾应该是这样的(让content自适应大小)
AbsoluteLayout.SetLayoutBounds(content, new Rectangle(0f, 0f, AbsoluteLayout.AutoSize, AbsoluteLayout.AutoSize));

// 如果想让content占满整个父容器,应该改成:
AbsoluteLayout.SetLayoutBounds(content, new Rectangle(0f, 0f, 1f, 1f));
AbsoluteLayout.SetLayoutFlags(content, AbsoluteLayoutFlags.SizeProportional | AbsoluteLayoutFlags.PositionProportional);
  1. 小优化建议:
  • 给控件起更有意义的名字,比如forms可以改成registerFormLayout,后续维护代码时可读性更强
  • 你的StackLayout里的BoxView用了VerticalOptions = LayoutOptions.FillAndExpand填充剩余空间,这个没问题,但如果父容器是AbsoluteLayout,记得确保content的布局边界设置正确,不然FillAndExpand可能不会生效
  • 可以把布局的属性设置单独抽成代码块,整体代码会更整洁

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 08:38:05