Xamarin - нижняя половина зрения отрезана - PullRequest
0 голосов
/ 23 апреля 2020

Иногда при загрузке просмотра он не загружается полностью на Iphone .. см. Снимок экрана .. (изображения специально размыты ..) По крайней мере, он не загружается с правильными размерами. это обычно фиксируется поворотом телефона в горизонтальное и обратное положение .. есть ли способ избежать этого?

вот мой взгляд:

     <?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             xmlns:vm="clr-namespace:GalShare.ViewModel"
             xmlns:d="http://xamarin.com/schemas/2014/forms/design"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
             xmlns:ffimageloading="clr-namespace:FFImageLoading.Forms;assembly=FFImageLoading.Forms"
             xmlns:forms="clr-namespace:RedCorners.Forms;assembly=RedCorners.Forms"
             mc:Ignorable="d"
             x:Class="GalShare.Views.Gallery">

    <NavigationPage.TitleView>
        <Grid Padding="0">
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="100"/>
                <ColumnDefinition Width="*"/>
                <ColumnDefinition Width="180"/>
                <ColumnDefinition Width="10"/>
            </Grid.ColumnDefinitions>
            <Grid.RowDefinitions>
                <RowDefinition Height="45"/>
            </Grid.RowDefinitions>
            <Button Grid.Row="0" Grid.Column="0" Text="Back" x:Name="Backbutton" Clicked="Backbutton_Clicked"></Button>
            <Button Grid.Row="0" Grid.Column="2" Text="Ph. contact info" x:Name="PhInfo" Clicked="PhInfo_Clicked"></Button>
        </Grid>
    </NavigationPage.TitleView>

    <ContentPage.Content>
    <AbsoluteLayout HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand">
            <StackLayout
                 AbsoluteLayout.LayoutFlags="All"
                 AbsoluteLayout.LayoutBounds="0,0,1,1">
                <ContentView x:Name="Messagecontainer" Padding="5">
                    <forms:Frame2 CornerRadius="8"  
                               HasShadow="True"
                               ShadowRadius="8"    
                               ShadowColor="Black"
                               Padding="5"                               
                               BackgroundColor="LightGray">

                        <Label x:Name="Messagefield"></Label>
                    </forms:Frame2>
                </ContentView>
                <CollectionView ItemsSource="{Binding Galleries}" Margin="0" x:Name="MyCollection" SelectionMode="Single" SelectionChanged="CollectionView_SelectionChanged">
                    <CollectionView.ItemsLayout>
                        <GridItemsLayout Orientation="Vertical"                                 
                                Span="2" />

                    </CollectionView.ItemsLayout>
                    <CollectionView.ItemTemplate>
                        <DataTemplate>
                            <ContentView Padding="8">
                                <forms:Frame2 CornerRadius="15"  
                                       HasShadow="True"
                                       ShadowRadius="5"   
                                       HeightRequest="190"
                                       BackgroundColor="LightGray"
                                       Padding="1">
                                    <StackLayout HorizontalOptions="Start" VerticalOptions="Start" Padding="2">
                                        <Grid>
                                            <Grid.RowDefinitions>
                                                <RowDefinition Height="140"/>
                                                <RowDefinition Height="*"/>
                                            </Grid.RowDefinitions>
                                            <ffimageloading:CachedImage Grid.Row="0" Grid.Column="0" x:Name="myImage" Source="{Binding ThumbUrl}" Aspect="AspectFit" CacheDuration="1" HorizontalOptions="CenterAndExpand" VerticalOptions="CenterAndExpand" DownsampleToViewSize="False"></ffimageloading:CachedImage>
                                            <StackLayout Padding="0"  Margin="0"  Spacing="0" Grid.Column="0" Grid.Row="1">
                                                <StackLayout Spacing="0" Margin="0" Padding="5,0,5,0">
                                                    <ImageButton HorizontalOptions="Center" Padding="0" WidthRequest="28" Aspect="AspectFit" HeightRequest="28" Margin="0" Source="{Binding likeImg}" x:Name="Favoriteimage" Clicked="LikeButton_Clicked" ></ImageButton>
                                                 <!--   <Button CharacterSpacing="0"  HorizontalOptions="Center" Padding="0" WidthRequest="50" HeightRequest="28" Margin="0" Text="Like" x:Name="Favoriteimage" Clicked="Button_Clicked" ></Button>-->
                                                </StackLayout>
                                                    <Label x:Name="Picname" Text="{Binding ImageName}" IsVisible="{Binding showname}" FontSize="Micro" VerticalOptions="End" VerticalTextAlignment="Center" HorizontalTextAlignment="Center" ></Label>
                                            </StackLayout>
                                        </Grid>
                                    </StackLayout>
                                </forms:Frame2>
                            </ContentView>
                        </DataTemplate>
                    </CollectionView.ItemTemplate>
                </CollectionView>
            </StackLayout>
            <StackLayout IsVisible="{Binding isBusy}" x:Name="LoadingLayout" Padding="12"
                 AbsoluteLayout.LayoutFlags="PositionProportional"
                 AbsoluteLayout.LayoutBounds="0.5,0.5,-1,-1">
                <ActivityIndicator IsVisible="{Binding IsBusy}" 
                               IsRunning="{Binding IsBusy}" />
                <Label Text="Loading gallery..." IsVisible="{Binding IsBusy}" HorizontalOptions="Center" TextColor="Black"/>
            </StackLayout>
        </AbsoluteLayout>

    </ContentPage.Content>
</ContentPage>

enter image description here

1 Ответ

1 голос
/ 23 апреля 2020

Поскольку вы использовали AbsoluteLayout в качестве root макета ContentPage. Если вы хотите поместить ActivityIndicator в CollectionView , вы можете использовать Grid и поместить их в ту же ячейку.

<Grid VerticalOptions="CenterAndExpand" HorizontalOptions="CenterAndExpand">
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="*"/>

        </Grid.ColumnDefinitions>
        <Grid.RowDefinitions>
            <RowDefinition Height="*"/>
        </Grid.RowDefinitions>


        <StackLayout  Grid.Row="0" Grid.Column="0" BackgroundColor="Red"  x:Name="LoadingLayout" Padding="12">

           //...
        </StackLayout>

        <StackLayout Grid.Row="0" Grid.Column="0" IsVisible="{Binding isBusy}" x:Name="LoadingLayout" Padding="12" VerticalOptions="CenterAndExpand" HorizontalOptions="CenterAndExpand">
                <ActivityIndicator IsVisible="{Binding IsBusy}" 
                               IsRunning="{Binding IsBusy}" />
                <Label Text="Loading gallery..." IsVisible="{Binding IsBusy}" HorizontalOptions="Center" TextColor="Black"/>
        </StackLayout>

</Grid>

Если проблема все еще существует, Вы могли бы поделиться своим образцом, чтобы я мог проверить его на моей стороне.

...