【问题标题】:How to set the perfect corner radius for the image inside a XfxCardView in xamarin forms?如何在 xamarin 表单中为 XfxCardView 内的图像设置完美的圆角半径?
【发布时间】:2019-04-27 17:46:13
【问题描述】:

我有一个卡片视图,其中我有一个图像。我必须为该图像设置圆角半径,因此我使用框架来执行此操作。

这是我需要的 UI,我已经标记了图像

这是我得到的结果 .

这是我的代码

 <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>

我已经更改了圆角半径和边距,但我没有得到想要的结果。我是否必须使用其他东西来做到这一点,或者我应该在框架中进行任何更改。 我已经对代码进行了一些更改,因此我稍微接近所需的输出。 这是当前的输出

如您所见,框架中仍有一个间隙,我已对代码进行了更改,但仍未修复。这是我的代码

 <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>

【问题讨论】:

    标签: image xamarin xamarin.forms cardview


    【解决方案1】:

    尝试在 Grid 的 xaml 中将 is clipped to bounds 属性设置为 true

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

    【讨论】:

    • 不,它没有解决我的问题。
    • 为什么要把内边距和边距设置为负号?
    • 那是因为图片显示的非常小,所以我调整了margin和padding值让它看起来更大。
    • 这不是你做的,你改变了图像的方面,而不是给它所有这些你尝试将Aspect="AspectFit"添加到图像控件吗?
    • K 我试试看。
    【解决方案2】:

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

     <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>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-02-09
      • 2020-10-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多