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原生的知识有限 . 谁能告诉我要看什么,也许是一些很好的代码示例?我还没有找到任何与此类似的东西 .
2 回答
在Android平台上它可以很容易,但首先,你需要在Android资源的
Drawable
文件夹下创建你的影子 . 例如:将此文件命名为"shadow.xml"并将其放在Android项目的
Drawable
文件夹下,然后放在RatingInfoFrameRenderer
中:要更改阴影样式,可以修改shadow.xml文件,有关此内容的更多信息,请参阅google的官方文档:LayerList .
我能够在Xamarin Forms中获得阴影效果以获得盒子视图,我很确定它可以类似地用于Frame . 我从Android Documentation得到了线索
我添加了一个名为HasShadow的新属性
这是Android中Renderer的代码
这就是它的样子
UPDATE
我发现这种方法导致旧版Android的应用程序崩溃 . 虽然我还没有找到在Lollipop之前在Android版本中显示Shadows的方法 . 这可以防止任何应用程序崩溃