作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我创建了一个事件指示器并将其添加到 StackLayout,当我让它运行时,它在模拟器中显示在右上角 Android 4.4,在 iOS 中不显示,在 Android 6 手机中不显示.
var indicator = new ActivityIndicator()
{
Color = Color.Blue,
};
indicator.SetBinding(ActivityIndicator.IsVisibleProperty, "IsBusy", BindingMode.OneWay);
indicator.SetBinding(ActivityIndicator.IsRunningProperty, "IsBusy", BindingMode.OneWay);
AbsoluteLayout.SetLayoutFlags(indicator, AbsoluteLayoutFlags.PositionProportional);
AbsoluteLayout.SetLayoutBounds(indicator, new Rectangle(0.5, 0.5, AbsoluteLayout.AutoSize, AbsoluteLayout.AutoSize));
mainLayout.Children.Add(indicator);
我想将事件指示器显示在屏幕中央,因为该操作需要时间才能完成。
最佳答案
您在状态栏中看到的指示器是基页类的 IsBusy
属性的默认行为。您的代码不起作用的原因是因为您试图将 ActivityIndicator
的可见性绑定(bind)到该属性 - 但您没有指定绑定(bind)源。如果您查看调试器的应用程序输出日志,那么您可能会看到类似“在类型‘Object’上找不到属性‘IsBusy’”的消息。
要修复它,您只需将每个绑定(bind)的绑定(bind)上下文指向表单。试一试:
public partial class App : Application
{
public App ()
{
var mainLayout = new AbsoluteLayout ();
MainPage = new ContentPage {
Content = mainLayout
};
var containerPage = Application.Current.MainPage;
var indicator = new ActivityIndicator() {
Color = Color.Blue,
};
indicator.SetBinding(VisualElement.IsVisibleProperty, new Binding("IsBusy", BindingMode.OneWay, source: containerPage));
indicator.SetBinding(ActivityIndicator.IsRunningProperty, new Binding("IsBusy", BindingMode.OneWay, source: containerPage));
AbsoluteLayout.SetLayoutFlags(indicator, AbsoluteLayoutFlags.PositionProportional);
AbsoluteLayout.SetLayoutBounds(indicator, new Rectangle(0.5, 0.5, AbsoluteLayout.AutoSize, AbsoluteLayout.AutoSize));
mainLayout.Children.Add(indicator);
containerPage.IsBusy = true;
}
}
关于xamarin - 如何在屏幕中间显示 ActivityIndicator?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36177128/
我是一名优秀的程序员,十分优秀!