Xamarin Forms显示阻塞加载消息

时间:2014-10-29 02:56:57

标签: xamarin.ios xamarin xamarin.forms

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

我尝试过使用ActivityIndicator,虽然它显示正确,但它允许更新基础控件。

Xamarin iOS代码正是我想要的,但我需要在使用Xamarin.Forms时执行此操作。

http://developer.xamarin.com/recipes/ios/standard_controls/popovers/display_a_loading_message/

有什么想法吗?

1 个答案:

答案 0 :(得分:5)

创建一个自定义渲染器,在整个屏幕上叠加 BoxView 。您可以根据自己的喜好自定义颜色填充不透明度显示基础内容

然后,您可以将 Xamarin.Forms ActivityIndi​​cator 置于屏幕中间以完成相同的效果。

注意 - 但是,目前在 v1.2.3x Android 上存在一个错误,它允许底层控件仍然接收用户输入事件,就像按下按钮一样,尽管 BoxView 之上

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

更新1

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

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

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

然后,您可以像网格一样创建页面内容,将此放在单元格(0,0)。< / p>

对于下一部分(您可以将其放在控件渲染器中),以便可以在多个页面中轻松地重复使用它。如果你对控制渲染器不太满意,你可以随时创建一个函数来返回 Grid 对象,但是你可以在多个页面中使用它: -

  • 网格作为您的基础

    • BoxView 作为网格的孩子

    • ActivityIndi​​cator 作为网格的孩子。

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

然后,您可以控制此内容上此重叠面板的可见性。

当您显示 / 隐藏面板时,您自然会想要设置 ActivityIndi​​cator IsRunning 属性。只需创建一些方法,例如 ShowActivityIndi​​cator() HideActivityIndi​​cator(),或许可以简化此操作。