我使用框架标签将网格包裹在内部,但每当我向框架添加角半径时,所述框架的背景颜色从圆角处出来并显示为锐角。 / 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>
答案 0 :(得分:2)
这是实施Frame元素类型的错误。尽管框架不会包含其自身的背景,但是它将包含框架中其他元素的背景。
解决方法是将一个框架包装在相同大小的框架内。使用外部框架指定CornerRadius,但不包括BackgroundColor。内框可以指定背景色,外框会四舍五入。
请确保在两个帧中都包含Padding =“ 0,0,0,0”。
答案 1 :(得分:0)
我通过使用FreshEssentials库解决了这个问题。参见
https://forums.xamarin.com/discussion/57546/how-can-i-achieve-this-effect-stacklayout-or-frame
和
http://michaelridland.com/xamarin/freshessentials-for-xamarin-forms-the-must-have-nuget-for-forms/
答案 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”,而是创建另一个。