Xamarin圆角框架的背景颜色超过圆形边缘

时间:2017-11-30 10:05:42

标签: c# xaml xamarin

我使用框架标签将网格包裹在内部,但每当我向框架添加角半径时,所述框架的背景颜色从圆角处出来并显示为锐角。 / p>

有人可以帮忙吗?

图像也附有问题以正确描述问题。

代码段是:

<Frame CornerRadius="15" 
       BackgroundColor="Aqua"  
       OutlineColor="Black" 
       MinimumHeightRequest="100" 
       MinimumWidthRequest="150" 
       HorizontalOptions="Center" 
       VerticalOptions="Center" 
       Grid.Column="2">
    <Grid x:Name="MessageGrid"   
          HorizontalOptions="Fill" 
          VerticalOptions="Fill">
        <Grid Margin="0,0,0,0" 
              HorizontalOptions="FillAndExpand" 
              InputTransparent="True"  
              VerticalOptions="FillAndExpand">
            <Label x:Name="InfoText" 
                   TextColor="Black" 
                   HorizontalOptions="FillAndExpand" 
                   VerticalOptions="FillAndExpand" 
                   InputTransparent="True"
                   Text="Tooltip text goes here and this is to check if its responsive"/>
        </Grid>
    </Grid>
</Frame>

enter image description here

5 个答案:

答案 0 :(得分:2)

这是实施Frame元素类型的错误。尽管框架不会包含其自身的背景,但是它将包含框架中其他元素的背景。

解决方法是将一个框架包装在相同大小的框架内。使用外部框架指定CornerRadius,但不包括BackgroundColor。内框可以指定背景色,外框会四舍五入。

请确保在两个帧中都包含Padding =“ 0,0,0,0”。

答案 1 :(得分:0)

答案 2 :(得分:0)

简单设置:

IsClippedToBounds = "True"

在框架中。它将阻止子元素移出容器。

答案 3 :(得分:0)

这是因为您的框架允许网格超出其边界,因此您需要将边界设置为IsClippedToBounds = "True"

将其应用于您的代码后,它将看起来像这样

<Frame CornerRadius="15" 
       BackgroundColor="Aqua"  
       OutlineColor="Black" 
       MinimumHeightRequest="100" 
       MinimumWidthRequest="150" 
       HorizontalOptions="Center" 
       VerticalOptions="Center" 
       Grid.Column="2"
       IsClippedToBounds = "True">
    <Grid x:Name="MessageGrid"   
          HorizontalOptions="Fill" 
          VerticalOptions="Fill">
        <Grid Margin="0,0,0,0" 
              HorizontalOptions="FillAndExpand" 
              InputTransparent="True"  
              VerticalOptions="FillAndExpand">
            <Label x:Name="InfoText" 
                   TextColor="Black" 
                   HorizontalOptions="FillAndExpand" 
                   VerticalOptions="FillAndExpand" 
                   InputTransparent="True"
                   Text="Tooltip text goes here and this is to check if its responsive"/>
        </Grid>
    </Grid>
</Frame>

现在,当您设置IsClippedToBounds = "True"时,它将告诉您的框架不要让其子元素超出其范围/边界,以便您的问题得到解决

答案 4 :(得分:0)

我遇到了同样的问题,很难解决。但是,我找到了解决方案: 我创建了一个名为 EntryBackgroundColorProperty 的属性,并且在自定义渲染器实现中,gradientDrawabe 的颜色指向这个新属性。

总结:您必须避免使用默认属性“BackgroundColor”,而是创建另一个。