我在我的应用程序中设置了一个使用TabbedPage的设置,并且我有一个带有listView的页面。 为了显示ActivityIndicator,我使用了将listView放在AbsoluteLayout中的方法。 但是,这会产生令人遗憾的影响,即我的列表视图中的最后一项是遥不可及的。我无法正确滚动它们。 我认为这与绝对布局的大小有关,但我无法做到这一点。
是否有其他解决方案来获取活动指标或是否可以更正?我应该使用相对布局吗?
我没有设置Content属性,而是使用此方法:
protected void SetContent (View content)
{
var overlay = new AbsoluteLayout ();
loadingIndicator = new ActivityIndicator {
HorizontalOptions = LayoutOptions.CenterAndExpand,
VerticalOptions = LayoutOptions.Start,
Scale = 2,
Color = Color.Silver
};
AbsoluteLayout.SetLayoutFlags (content, AbsoluteLayoutFlags.PositionProportional);
AbsoluteLayout.SetLayoutBounds (content, new Rectangle (0f, 0f, AbsoluteLayout.AutoSize, AbsoluteLayout.AutoSize));
AbsoluteLayout.SetLayoutFlags (loadingIndicator, AbsoluteLayoutFlags.PositionProportional);
AbsoluteLayout.SetLayoutBounds (loadingIndicator, new Rectangle (0.5, 0.5, AbsoluteLayout.AutoSize, AbsoluteLayout.AutoSize));
overlay.Children.Add (content);
overlay.Children.Add (loadingIndicator);
Content = overlay;
}
在TabbedPage中的页面中。
请帮忙!
答案 0 :(得分:0)
您也可以尝试使用Grid
控件。无论何时在同一行内设置两个元素,它们都会正确地相互重叠。因此,基本上您将拥有包含所有页面内容的一行或多行,然后在页面底部,您可以定义ActivityIndicator
并将其设置为第0行。具体取决于行数,您需要将RowSpacing
设置为1以外的其他内容,以便覆盖整个页面。
通过执行此操作,您可以确保ActivityIndicator
位于所有控件之上(XAML底部的控件位于运行时顶部的控件上)。显然,同样的事情也适用于代码隐藏。
答案 1 :(得分:0)
我建议使用ACR UserDialogs
using (this.Dialogs.Loading("Test Loading"))
await Task.Delay(3000);
初始化
iOS和Windows
从v4.x起不再需要了。 iOS有一个Init函数,但它是可选的,只有在你需要/需要控制时才需要 iOS扩展等顶级视图控制器。虽然进度提示不会使用此工厂功能!
Android(在MainActivity.cs中)
UserDialogs.Init(this);