Xamarin Forms中的Frame类非常有限,不能让我在Frame后面获得阴影。我使用以下代码为iOS制作了一个自定义渲染器:
public class RatingInfoFrameRenderer : FrameRenderer
{
protected override void OnElementChanged(ElementChangedEventArgs<Frame> e)
{
base.OnElementChanged(e);
Layer.BorderColor = UIColor.White.CGColor;
Layer.CornerRadius = 10;
Layer.MasksToBounds = false;
Layer.ShadowOffset = new CGSize(-2, 2);
Layer.ShadowRadius = 5;
Layer.ShadowOpacity = 0.4f;
}
}
在Android上做一个类似的是给我带来了问题,因为我对Android原生的知识是有限的。谁能告诉我该看些什么,也许是一些好的代码示例?我还没找到和这个相似的东西
3条答案
按热度按时间uurv41yg1#
在Android平台上可以很容易,但首先,你需要在Android资源的
Drawable
文件夹下创建你的影子。例如,如匿名贡献者在Android Developer Tips & Tricks中所示:将此文件命名为“shadow.xml”,并将其放置在Android项目的
Drawable
文件夹下,然后在您的RatingInfoFrameRenderer
中:要改变shadow的样式,可以修改shadow.xml文件,关于这方面的更多信息,可以参考google的官方文档:LayerList。
swvgeqrz2#
我知道这个问题是老了,但有一个更新的方式获得更好的阴影效果,然后接受的答案。从
Xamarin.Forms.Platform.Android.FastRenderers.FrameRenderer
继承,然后使用SetOutlineSpotShadowColor(Color color)
设置阴影颜色。您也可以使用CardElevation
来确定阴影的强度和扩展。希望这能帮助像我一样在这里跌跌撞撞的人。
bvjxkvbb3#
我能够在Xamarin Forms中为框视图获得阴影效果,我很确定它可以类似地用于Frame。我从Android文档中得到了线索
我添加了一个名为HasShadow的新属性
下面是Android中渲染器的代码
这就是它的样子
更新
我发现这种方法会导致旧版本Android的应用程序崩溃。虽然我还没有找到一种方法来显示阴影在Android版本之前棒棒糖。这将防止任何应用程序崩溃