Xamarin Forms显示阻塞加载消息

Ste*_*rne 0 xamarin.ios xamarin xamarin.forms

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

我已经尝试使用,ActivityIndicator并且正确显示,它允许更新底层控件.

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

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

有任何想法吗?

Pet*_*ete 5

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

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

-但是,目前在v1.2.3x有一个错误的Android,允许潜在的控制仍然接收用户输入事件,例如按钮点击,尽管BoxView中的在最上层的一切.

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

更新1

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

在您的页面中尝试以下内容: -

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

然后,您可以创建你的页面内容像正常的孩子网格,这个定位在单元格(0,0) .

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

  • 网格作为您的基础

    • BoxView作为Grid的孩子

    • ActivityIndi​​cator作为Grid的子级.

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

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

当然,无论何时显示/隐藏面板,您都需要设置ActivityIndi​​catorIsRunning属性.只是创建一些方法,如ShowActivityIndi​​cator()HideActivityIndi​​cator(),或许可以简化这一点.