我正在使用xamarin表单pcl开发一个应用程序 . 我需要一个带圆角的stacklayout . 我也尝试了圆角容器的框架,但没有可用的角半径属性 . 我找不到ios,android,uwp,windows 8.1的渲染器 .
任何人都可以建议我如何实现所有平台的圆角以及角半径属性的stacklayout .
您可以使用Frame并将StackLayout放入其中,Note Frame默认采用填充20:
<Frame CornerRadius="10" OutlineColor="Red" Padding="0"> <StackLayout> </StackLayout> </Frame>
<!--Curved stack--> <Frame CornerRadius="5" HorizontalOptions="Center" VerticalOptions="Start" HasShadow="True" Padding="0"> <StackLayout Padding="10,5,10,5" Orientation="Horizontal" BackgroundColor="White" > <Image Source="settingsIcon" HeightRequest="25" WidthRequest="25" Aspect="Fill" /> <Label Text="Filter" FontSize="Medium" VerticalTextAlignment="Center" VerticalOptions="Center"/> </StackLayout> </Frame>
我只是试图复制BigBasket的过滤器按钮 . See How cool it looks
使用以下来实现您的预期输出
Xamarin Forms控件:https://github.com/nitescua/Xamore/blob/master/Xamore.Controls/Border.cs
iOS:https://github.com/nitescua/Xamore/blob/master/Xamore.Controls.iOS/Renderers/BorderRenderer.cs
Android:https://github.com/nitescua/Xamore/blob/master/Xamore.Controls.Droid/Renderers/BorderRenderer.cs https://github.com/nitescua/Xamore/blob/master/Xamore.Controls.Droid/Renderers/BorderRendererVisual.cs(注意https://github.com/nitescua/Xamore/tree/master/Xamore.Controls.Droid/Renderers中的一些文件已将编译设置为无,我正在做一些测试,需要删除那些)
WinPhone:https://github.com/nitescua/Xamore/blob/master/Xamore.Controls.WinPhone/Renderers/BorderRenderer.cs
由于Xamarin已经发布了Effects机制,现在可以通过在两个平台上实现自定义效果来完成 . 这种方法的一个优点是效果更轻,可重复使用,并且可以参数化并应用于任何UI元素 .
创建自定义 RoundCornersEffect 继承 RoutingEffect 后,声明 CornerRadius 附加属性并在每个平台上实现 PlatformEffect ,它可以应用于任何 Xamarin.Forms 布局或控件,如下所示:
RoundCornersEffect
RoutingEffect
CornerRadius
PlatformEffect
Xamarin.Forms
<StackLayout effects:RoundCornersEffect.CornerRadius="48"/>
具有硬编码的角半径或来自资源的值
<BoxView effects:RoundCornersEffect.CornerRadius="{StaticResource LargeCornerRadius}" />
这是full implementation and usage examples的链接 .
您可以为任何布局或视图或单元格设置圆角(StackLayout,Grid,ListView)
http://venkyxamarin.blogspot.in/2017/12/how-to-set-corner-radius-for-view.html#more
我最近有同样的需求,所以我为iOS和Android创建了一个自定义渲染器 . 我把它作为Nuget发布了,你可以找到here . 源代码可在GitHub上找到,这里有点"How-To"
希望这可以帮助!它非常易于使用(与ContentView相同,它就是它的基础),虽然注意这是.NET Standard的编译,但您也可以将代码拉入PCL
6 回答
您可以使用Frame并将StackLayout放入其中,Note Frame默认采用填充20:
我只是试图复制BigBasket的过滤器按钮 . See How cool it looks
使用以下来实现您的预期输出
Xamarin Forms控件:https://github.com/nitescua/Xamore/blob/master/Xamore.Controls/Border.cs
iOS:https://github.com/nitescua/Xamore/blob/master/Xamore.Controls.iOS/Renderers/BorderRenderer.cs
Android:https://github.com/nitescua/Xamore/blob/master/Xamore.Controls.Droid/Renderers/BorderRenderer.cs https://github.com/nitescua/Xamore/blob/master/Xamore.Controls.Droid/Renderers/BorderRendererVisual.cs(注意https://github.com/nitescua/Xamore/tree/master/Xamore.Controls.Droid/Renderers中的一些文件已将编译设置为无,我正在做一些测试,需要删除那些)
WinPhone:https://github.com/nitescua/Xamore/blob/master/Xamore.Controls.WinPhone/Renderers/BorderRenderer.cs
由于Xamarin已经发布了Effects机制,现在可以通过在两个平台上实现自定义效果来完成 . 这种方法的一个优点是效果更轻,可重复使用,并且可以参数化并应用于任何UI元素 .
创建自定义
RoundCornersEffect
继承RoutingEffect
后,声明CornerRadius
附加属性并在每个平台上实现PlatformEffect
,它可以应用于任何Xamarin.Forms
布局或控件,如下所示:具有硬编码的角半径或来自资源的值
这是full implementation and usage examples的链接 .
您可以为任何布局或视图或单元格设置圆角(StackLayout,Grid,ListView)
http://venkyxamarin.blogspot.in/2017/12/how-to-set-corner-radius-for-view.html#more
我最近有同样的需求,所以我为iOS和Android创建了一个自定义渲染器 . 我把它作为Nuget发布了,你可以找到here . 源代码可在GitHub上找到,这里有点"How-To"
希望这可以帮助!它非常易于使用(与ContentView相同,它就是它的基础),虽然注意这是.NET Standard的编译,但您也可以将代码拉入PCL