如何在Xamarin形式的XfxCardView中设置图像的理想角半径?

时间:2018-11-26 05:08:08

标签: image xamarin xamarin.forms cardview

我有一张卡片视图,其中有一张图像。我必须为该图像设置拐角半径,因此我正在使用框架进行此操作。

这是我需要的用户界面,并且已标记图像

这是我得到的结果

这是我的代码

 <xfx:XfxCardView 
                        BackgroundColor="White"
                        CornerRadius="30" 
                    Elevation="30"
                 HeightRequest="100" >
                    <Grid RowSpacing="0">
                        <Grid ColumnSpacing="0">
                            <Grid.RowDefinitions >
                                <RowDefinition Height="*"></RowDefinition>

                                <RowDefinition Height="Auto"></RowDefinition>
                            </Grid.RowDefinitions>
                            <Grid.ColumnDefinitions >
                                <ColumnDefinition Width="*"></ColumnDefinition>
                                <ColumnDefinition Width="Auto"></ColumnDefinition>
                            </Grid.ColumnDefinitions>
                            <Frame CornerRadius="10" Margin="0"  Padding="0" IsClippedToBounds="True">
                                <Image Margin="-70,0,0,0"   Source="restaurantimage1.jpg"  Grid.Row="0" Grid.Column="0" Grid.RowSpan="3"/>
                            </Frame>
                            <Label Grid.Row="0" Grid.Column="1" Margin="0,0,100,0" BackgroundColor="Aqua" HorizontalOptions="Start" Text="Premera restaurant" TextColor="Black" FontFamily="Bold,20"/>
                            <Label Grid.Row="1" Grid.Column="1" Margin="0,0,100,0" BackgroundColor="Green" HorizontalTextAlignment="Start" Text="Avenue Road,256" TextColor="Blue"/>
                            <Label Grid.Row="2" Grid.Column="1" Margin="0,0,100,0" BackgroundColor="LightBlue" VerticalTextAlignment="Start" Text="Indian,Italy,Chinese" TextColor="LightGray"/>
                        </Grid>
                    </Grid>
                </xfx:XfxCardView>

我对拐角半径和边距进行了更改,但没有得到理想的结果。我是否需要使用其他方法来执行此操作,还是应该在Frame中进行任何更改? 我对代码做了一些更改,所以我稍微接近所需的输出。 这是当前输出

如您所见,我在代码中进行了更改,但是框架中仍然存在空白,但是仍然没有得到解决。这是我的代码

 <xfx:XfxCardView 
                        BackgroundColor="White"
                        CornerRadius="30" 
                    Elevation="30"
                 HeightRequest="100" >
                    <Grid RowSpacing="0">
                        <Grid ColumnSpacing="0">
                            <Grid.RowDefinitions >
                                <RowDefinition Height="*"></RowDefinition>

                                <RowDefinition Height="Auto"></RowDefinition>
                            </Grid.RowDefinitions>
                            <Grid.ColumnDefinitions >
                                <ColumnDefinition Width="*"></ColumnDefinition>
                                <ColumnDefinition Width="Auto"></ColumnDefinition>
                            </Grid.ColumnDefinitions>
                            <Frame Margin="0" Padding="-40" CornerRadius="25" Grid.RowSpan="3"  BackgroundColor="LightBlue"  IsClippedToBounds="True">
                                <Image Margin="-70,0,0,0"  Grid.Row="0" Grid.Column="0" Grid.RowSpan="3"  BackgroundColor="AliceBlue"  Source="restaurantimage1.jpg"  />
                            </Frame>
                            <Label Grid.Row="0" Grid.Column="1" Margin="0,0,100,0"  HorizontalOptions="Start" Text="Premera restaurant" TextColor="Black" FontFamily="Bold,20"/>
                            <Label Grid.Row="1" Grid.Column="1" Margin="0,0,100,0"  HorizontalTextAlignment="Start" Text="Avenue Road,256" TextColor="Blue"/>
                            <Label Grid.Row="2" Grid.Column="1" Margin="0,0,100,0"  VerticalTextAlignment="Start" Text="Indian,Italy,Chinese" TextColor="LightGray"/>
                        </Grid>
                    </Grid>
                </xfx:XfxCardView>

2 个答案:

答案 0 :(得分:1)

尝试在Grid的xaml中将“裁剪到边界”属性设置为true

 <Grid RowSpacing="0" IsClippedToBounds="True">

答案 1 :(得分:0)

我通过更改框架的边距来修复它。这是我的代码

 <xfx:XfxCardView 
                        BackgroundColor="White"
                        CornerRadius="30" 
                    Elevation="20"
                 HeightRequest="150" IsClippedToBounds="True">
                    <Grid RowSpacing="0" >
                        <Grid ColumnSpacing="0">
                            <Grid.RowDefinitions >
                                <RowDefinition Height="*"></RowDefinition>

                                <RowDefinition Height="Auto"></RowDefinition>
                            </Grid.RowDefinitions>
                            <Grid.ColumnDefinitions >
                                <ColumnDefinition Width="*"></ColumnDefinition>
                                <ColumnDefinition Width="Auto"></ColumnDefinition>
                            </Grid.ColumnDefinitions>
                            <Frame Margin="10,10,10,20" Padding="-40" CornerRadius="10" Grid.RowSpan="3"  BackgroundColor="LightBlue"  IsClippedToBounds="True">
                                <Image Margin="-70,0,0,0"  Grid.Row="0" Grid.Column="0" Grid.RowSpan="3"  BackgroundColor="AliceBlue"  Source="restaurantimage1.jpg"  />
                            </Frame>
                            <Label Grid.Row="0" Grid.Column="1" Margin="0,30,30,0"  HorizontalOptions="Start" Text="Premera restaurant" TextColor="Black" FontFamily="Bold,20"/>
                            <Image Grid.Row="0" Grid.Column="1" Margin="0,30,10,0" HorizontalOptions="End" Source="whitehearticon3.jpg"/>
                            <Label Grid.Row="1" Grid.Column="1" Margin="0,-20,40,0"  HorizontalTextAlignment="Start" Text="Avenue Road,256" TextColor="Blue"/>
                            <Label Grid.Row="2" Grid.Column="1" Margin="0,0,40,0"  VerticalTextAlignment="Start" Text="Indian,Italy,Chinese Kitchen" TextColor="LightGray"/>


                        </Grid>
                    </Grid>
                </xfx:XfxCardView>