@NiKoTiN1

Как заставить frame масштаббироваться так, чтобы он не обрезался границам клетки?

Суть проблемы: использую команду scaleTo, при уменьшении элемента все хорошо, но как только он начинает увеличаваться (значение scale > 2) границы визуального компонента начинают обрезаться границами клетки, выделенной для этого элемента.
Скрины:
5db0d61bb3191291062704.png
5db0d63a084f4184230579.png

Xaml код:
<?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:d="http://xamarin.com/schemas/2014/forms/design"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
             mc:Ignorable="d"
             xmlns:local="clr-namespace:JustEat"
             x:Class="JustEat.recepies"
             Icon="list1.png"
             >

    <CollectionView SelectionMode="Single" x:Name="VIEW" ItemsSource="{Binding ResepiesItems}" HorizontalOptions="Center" Margin="10">
        
        <CollectionView.ItemsLayout>
            <GridItemsLayout Orientation="Vertical"
                             Span="2"
                             HorizontalItemSpacing="10"
                             VerticalItemSpacing="10"/>
        </CollectionView.ItemsLayout>

        <CollectionView.ItemTemplate>
            <DataTemplate>
                <Frame CornerRadius="15" BackgroundColor="Silver" Padding="0" IsClippedToBounds = "True" HasShadow="True" >
                    <Frame.GestureRecognizers>

                        <TapGestureRecognizer
                            Tapped="TapGestureRecognizer_Tapped"/>
                    </Frame.GestureRecognizers>
                    <Grid>

                        <Grid.RowDefinitions>
                            <RowDefinition Height="270"/>
                            <RowDefinition Height="100"/>
                        </Grid.RowDefinitions>

                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="*" />
                        </Grid.ColumnDefinitions>

                        <local:AspectRatioConteiner AspectRatio="1">

                            <Image Source="{Binding ImageSrc}"
                           Aspect="AspectFill"
                           HorizontalOptions="FillAndExpand"
                           VerticalOptions="FillAndExpand"  
                           HeightRequest="120"
                           WidthRequest="120"
                           Margin="0,0,0,0"
                           BackgroundColor="Red"/>

                        </local:AspectRatioConteiner>

                        <Label Grid.Column="0"
                           Grid.Row="1"
                           Text="{Binding Name}"
                           FontAttributes="Bold"
                           HorizontalOptions="CenterAndExpand"
                           VerticalOptions="Start"
                            BackgroundColor="Green"/>

                    </Grid>

                </Frame>
            </DataTemplate>
        </CollectionView.ItemTemplate>

    </CollectionView>

</ContentPage>
  • Вопрос задан
  • 129 просмотров
Пригласить эксперта
Ответы на вопрос 1
AsceticSoft
@AsceticSoft
Xamarin-разработчик+fullstack(JavaSpring+Angular)
Точного ответа подсказать не смогу, но могу посоветовать:
1) убери IsClippedToBounds = "True" из frame
2) RelativeLayout может пригодиться, т.к. он хоть и не удобный, но вроде как единственный, способный принимать события тача вне своих границ. Возможно, и с рисованием тоже получится.
3) Учти, что на iOS рисовать за границами экрана не получится, если физический размер контрола меньше чем канвас. На андроид прокатывает, на иос - нет.
4) Не изобретай велосипед, это дорого стоит. Есть годные контролы, на который разработчики не один год потратили. Пример: CardView
5) В добавление к 4му пункту. Если планируются какие-то обработчики жестов на твоих вьюшках, тогда ты даже не представляешь какие у тебя за спиной ухмыляются большие, черные и мускулистые проблемы. Глянь исходники вышеприведенного контрола, какие там костыли(качественные) созданы чтобы это работало.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы