Xamarin表单:如何在Scrollview中修复屏幕中心的活动指示器

时间:2018-01-17 07:32:26

标签: xaml xamarin xamarin.forms uiscrollview

ScrollView超过AbsoluteLayout .. 我需要在屏幕中心修复ActivityIndi​​cator的位置。 我尝试了以下代码。

<ScrollView>
    <AbsoluteLayout VerticalOptions="FillAndExpand"
                    HorizontalOptions="FillAndExpand">
        <StackLayout BackgroundColor="White"
                     Padding="50,20,50,20"
                     Spacing="5"
                     AbsoluteLayout.LayoutBounds="0,0,1,1"
                     AbsoluteLayout.LayoutFlags="All"> 
            // have set of elements..
        </StackLayout>
        <ActivityIndicator IsVisible="{Binding IsBusy}"
                           IsRunning="{Binding IsBusy}"
                           Color="Black"
                           AbsoluteLayout.LayoutBounds="0.5,0.5,0.1,0.1"
                           AbsoluteLayout.LayoutFlags="All"/>
    </AbsoluteLayout>
</ScrollView>

我发现结果位于ScrollView的中心。

我尝试将ActivityIndicator放在ScrollView的外侧,只是将白色屏幕作为输出。

如何在屏幕中心修复ActivityIndicator的位置?

3 个答案:

答案 0 :(得分:5)

正如@Vahid所说,如果你希望ActivityIndicator超过ScrollView,你需要将两者放在AbsoluteLayout中,如下所示:

<AbsoluteLayout VerticalOptions="FillAndExpand"
                HorizontalOptions="FillAndExpand">
    <ScrollView AbsoluteLayout.LayoutBounds="0,0,1,1"
                AbsoluteLayout.LayoutFlags="All"
                VerticalOptions="FillAndExpand"
                HorizontalOptions="FillAndExpand">
        <StackLayout BackgroundColor="White"
                     Padding="50,20,50,20"
                     Spacing="5">
            // Your stuff goes here
        </StackLayout>
    </ScrollView>
    <AbsoluteLayout BackgroundColor="#22000000"
                    AbsoluteLayout.LayoutBounds="0.5,0.5,1,1"
                    AbsoluteLayout.LayoutFlags="All"
                    IsVisible="{Binding IsBusy}">
        <ActivityIndicator Color="Black"
                           AbsoluteLayout.LayoutBounds="0.5,0.5,0.1,0.1"
                           AbsoluteLayout.LayoutFlags="All"
                           IsVisible="True"
                           IsRunning="True"/>
    </AbsoluteLayout>
</AbsoluteLayout>

请注意,我添加了额外的AbsoluteLayout,其效果类似于等待叠加层&#39;只在ScrollView上 - 而不是整个屏幕。

答案 1 :(得分:1)

创建一个包含一行和一列的网格页面。 将ActivityIndi​​catorLayout和ScrollLayout定义为第0行和第0列。我在活动指标之前添加内容。

答案 2 :(得分:0)

您可以使用Rg.Plugins.Popup
设计带有活动指示器的弹出页面,您可以在任何地方显示它。