如何使用 AbsoluteLayout 滚动 Xamarin.forms

use*_*877 4 c# xamarin xamarin.forms

我有这个 .XAML 页面并且 Scroll 不起作用当我删除 AbsoluteLayout 并采用 stacklayout 时它工作正常。

<ScrollView>
    <AbsoluteLayout>
        <ListView x:Name="lstView" ItemsSource="{Binding Items}" AbsoluteLayout.LayoutFlags="All" AbsoluteLayout.LayoutBounds="0,0,1,1"
       ItemSelected="lstView_ItemSelected">

            <ListView.Header>
                <Label Text="Store Allocation" BackgroundColor="White" TextColor="Black" FontAttributes="Bold" HorizontalOptions="Fill" HorizontalTextAlignment="Center"  />

            </ListView.Header>
            <ListView.ItemTemplate>
                <DataTemplate>
                    <TextCell Text="{Binding Title}"  Height="200" Detail="{Binding Detail}" DetailColor="Black" TextColor="Red"  />
                </DataTemplate>
            </ListView.ItemTemplate>
        </ListView>
        <BoxView AbsoluteLayout.LayoutFlags="All" AbsoluteLayout.LayoutBounds="0,0,1,1" BackgroundColor="LightGray" Opacity="0.7" InputTransparent="False" IsVisible="{Binding Path=IsBusy, Source={x:Reference Page}}" />
        <ActivityIndicator IsRunning="{Binding Path=IsBusy, Source={x:Reference Page}}" AbsoluteLayout.LayoutFlags="PositionProportional" AbsoluteLayout.LayoutBounds=".5,.5,-1,-1" />
    </AbsoluteLayout>
</ScrollView>
Run Code Online (Sandbox Code Playgroud)

Pau*_*her 6

您的 XAML 基本上“说”ScrollView在页面上放了一个,并AbsoluteLayout填充了ScrollView. 由于内部布局非常适合,ScrollView因此无需滚动。此外,theListView和 theBoxView设置为整体AbsoluteLayoutAbsoluteLayout.LAyoutBounds="0,0,1,1"),不多不少。为什么应该ScrollView卷轴?

此外,如果它以这种方式工作,您将ActivityIndicator与其他所有内容一起滚动,这可能不是您想要的。我假设您希望ActivityIndicatorListView.

你可以尝试什么(我不是 100% 确定,但它应该工作)是用 包装ListView唯一的ScrollViewScrollViewAbsoluteLayout这种方式放置,ScrollView它将识别ListView屏幕太大并启用滚动,而其他一切保持不变到位:

<AbsoluteLayout>
    <ScrollView AbsoluteLayout.LayoutFlags="All" AbsoluteLayout.LayoutBounds="0,0,1,1">
        <ListView x:Name="lstView" ItemsSource="{Binding Items}"
            ItemSelected="lstView_ItemSelected">
            <ListView.Header>
                <Label Text="Store Allocation" BackgroundColor="White" TextColor="Black" FontAttributes="Bold" HorizontalOptions="Fill" HorizontalTextAlignment="Center"  />
            </ListView.Header>
            <ListView.ItemTemplate>
                <DataTemplate>
                    <TextCell Text="{Binding Title}"  Height="200" Detail="{Binding Detail}" DetailColor="Black" TextColor="Red"  />
                </DataTemplate>
            </ListView.ItemTemplate>
        </ListView>
    </ScrollView>
    <BoxView AbsoluteLayout.LayoutFlags="All" AbsoluteLayout.LayoutBounds="0,0,1,1" BackgroundColor="LightGray" Opacity="0.7" InputTransparent="False" IsVisible="{Binding Path=IsBusy, Source={x:Reference Page}}" />
    <ActivityIndicator IsRunning="{Binding Path=IsBusy, Source={x:Reference Page}}" AbsoluteLayout.LayoutFlags="PositionProportional" AbsoluteLayout.LayoutBounds=".5,.5,-1,-1" />
</AbsoluteLayout>
Run Code Online (Sandbox Code Playgroud)