Xamarin.ios Xamarin表单显示阻塞加载消息

Xamarin.ios Xamarin表单显示阻塞加载消息,xamarin.ios,xamarin,xamarin.forms,Xamarin.ios,Xamarin,Xamarin.forms,我有一个长时间运行的任务,我想显示一个进度指示器和消息 我尝试过使用活动指示器,虽然它显示正确,但它允许更新基础控件 这个XamariniOS代码正是我想要的,但我需要在使用Xamarin.Forms中完成它 有什么想法吗?创建一个自定义渲染器,在整个屏幕上覆盖一个框视图。您可以自定义颜色填充和不透明度,以根据自己的喜好显示底层内容 你可以将一个“强> XAMARIN”放在屏幕中间,以表格形式强> ActuvyType < /强>结束相同的效果。 注意-然而,目前在v1.2.3x中,Andro

我有一个长时间运行的任务,我想显示一个进度指示器和消息

我尝试过使用
活动指示器
,虽然它显示正确,但它允许更新基础控件

这个
Xamarin
iOS
代码正是我想要的,但我需要在使用
Xamarin.Forms
中完成它


有什么想法吗?

创建一个自定义渲染器,在整个屏幕上覆盖一个框视图。您可以自定义颜色填充不透明度,以根据自己的喜好显示底层内容

你可以将一个“强> XAMARIN”放在屏幕中间,以表格形式<强/>强> ActuvyType < /强>结束相同的效果。

注意-然而,目前在v1.2.3x中,Android上有一个bug,它允许底层控件仍然接收用户输入事件,比如按钮点击,,尽管BoxView位于所有内容之上

这个问题显然在即将发布的v1.3版本中得到了解决

更新1

作为更复杂控件的一部分,它不容易提取,但是要获得与链接中类似的效果并不难

在您的页面中尝试以下操作:-

使用网格作为基础(1行1列),将其设置为填充屏幕,并将行和列定义设置为GridUnitType.Star

然后,您可以像普通一样创建页面内容,将其作为网格的子元素,将其定位在单元格(0,0)处

对于下一部分(您可以将其放在控件渲染器中),以便它可以在多个页面上轻松重复使用。如果您对控件渲染器不太熟悉,则始终可以创建一个函数来返回一个网格对象,但是可以跨多个页面使用:-

  • 网格作为您的基础

    • BoxView作为网格的子项

    • ActivityIndicator作为网格的子项

一旦您从上面得到网格结果,您也可以将其添加到页面的网格根控件中,再次将其定位到单元格(0,0)

然后,您可以控制此覆盖面板在内容上的可见性


当然,只要显示/隐藏面板,您就需要设置活动指示器的正在运行属性。只需创建两个方法,例如ShowActivityIndicator(),和HideActivityIndicator(),或许可以简化这个过程。

创建一个覆盖整个屏幕的自定义渲染器。您可以自定义颜色填充不透明度,以根据自己的喜好显示底层内容

你可以将一个“强> XAMARIN”放在屏幕中间,以表格形式<强/>强> ActuvyType < /强>结束相同的效果。

注意-然而,目前在v1.2.3x中,Android上有一个bug,它允许底层控件仍然接收用户输入事件,比如按钮点击,,尽管BoxView位于所有内容之上

这个问题显然在即将发布的v1.3版本中得到了解决

更新1

作为更复杂控件的一部分,它不容易提取,但是要获得与链接中类似的效果并不难

在您的页面中尝试以下操作:-

使用网格作为基础(1行1列),将其设置为填充屏幕,并将行和列定义设置为GridUnitType.Star

然后,您可以像普通一样创建页面内容,将其作为网格的子元素,将其定位在单元格(0,0)处

对于下一部分(您可以将其放在控件渲染器中),以便它可以在多个页面上轻松重复使用。如果您对控件渲染器不太熟悉,则始终可以创建一个函数来返回一个网格对象,但是可以跨多个页面使用:-

  • 网格作为您的基础

    • BoxView作为网格的子项

    • ActivityIndicator作为网格的子项

一旦您从上面得到网格结果,您也可以将其添加到页面的网格根控件中,再次将其定位到单元格(0,0)

然后,您可以控制此覆盖面板在内容上的可见性


当然,只要显示/隐藏面板,您就需要设置活动指示器的正在运行属性。只需创建两个方法,例如ShowActivityIndicator(),和HideActivityIndicator(),或许可以简化这个过程。

听起来是一个很好的方法。你有没有代码显示自定义渲染器是如何工作的?谢谢Pete。听起来是个不错的方法Pete。您是否有任何代码显示自定义渲染器将如何工作?谢谢您的支持。