我有问题。我试图使用ProgressBar,所以创建了以下代码:
这是RelativeLayout:
这是C#代码:
ProgressBar progressBar;
public Preivew()
{
InitializeComponent();
ContentView LoadingView = new ContentView
{
VerticalOptions = LayoutOptions.FillAndExpand,
HorizontalOptions = LayoutOptions.FillAndExpand,
BackgroundColor = Color.Transparent
};
progressBar= new ProgressBar
{
ProgressColor = Color.FromHex("#3897F0"),
HorizontalOptions = LayoutOptions.FillAndExpand,
HeightRequest = 30,
Progress = 0.0
};
RelativeLoadingLayout.Children.Add(LoadingView,
Constraint.RelativeToParent((parent) =>
{
return (0);
}),
Constraint.RelativeToParent((parent) =>
{
return (0);
}),
Constraint.RelativeToParent((parent) =>
{
return parent.Width;
}), Constraint.RelativeToParent((parent) =>
{
return parent.Height;
}));
LoadingView.Content = progressBar;
}
protected override async void OnAppearing()
{
base.OnAppearing();
UpdateProgressBar(0.8, 2000).Wait();
}
async Task UpdateProgressBar(double Progress, uint time)
{
MemeProgressBar.ProgressTo(Progress, time, Easing.Linear);
}
但是,在加载页面时,已经加载了ProgressBar,没有动画。我创建了一个自定义任务,该任务应设置加载的动画。
我在做什么错了?
答案 0 :(得分:0)
编辑:确保您不在Xamarin.Forms 4.2版本上
您可以检查以下代码
<ProgressBar x:Name="progressBar" Progress="0.0" BackgroundColor="LightBlue" WidthRequest="200" HeightRequest="50"/>
protected override void OnAppearing()
{
base.OnAppearing();
UpdateProgressBar(0.8, 5000);
}
async Task UpdateProgressBar(double Progress, uint time)
{
progressBar.ProgressTo(Progress, time, Easing.Linear);
}
答案 1 :(得分:-1)
我可以看到您将进度手动设置为1,因此当然总是为1。ass @BiesiGrr表示您可能希望在OnAppearing生命周期方法上处理该代码,因为InitilizeComponents()不会并不是真正呈现页面,它只是初始化XAML中定义的对象,因此进度条可能甚至在呈现页面之前就完成了更新。
如果您需要在完成某些任务之后执行此代码,请尝试使用ContinueWith()方法或只是等待它(您的呼叫),我个人更喜欢异步等待模式