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 原生的了解有点有限。谁能告诉我要看什么,也许是一些很好的代码示例?我还没有找到任何与此类似的东西。
在Android平台上这可以很容易,但首先,你需要在下面创建你的影子Drawable
Android 资源文件夹。例如,如图所示Android 开发人员提示和技巧由匿名贡献者提供:
<?xml version="1.0" encoding="utf-8" ?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="rectangle">
<solid android:color="#CABBBBBB" />
<corners android:radius="2dp" />
</shape>
</item>
<item
android:left="0dp"
android:right="0dp"
android:top="0dp"
android:bottom="2dp">
<shape android:shape="rectangle">
<solid android:color="@android:color/white" />
<corners android:radius="2dp" />
</shape>
</item>
</layer-list>
将此文件命名为“shadow.xml”并将其放置在Drawable
Android 项目的文件夹,然后在你的RatingInfoFrameRenderer
:
public class RatingInfoFrameRenderer : FrameRenderer
{
protected override void OnElementChanged(ElementChangedEventArgs<Frame> e)
{
base.OnElementChanged(e);
if (e.NewElement != null)
{
ViewGroup.SetBackgroundResource(Resource.Drawable.shadow);
}
}
}
要改变shadow的样式,可以修改shadow.xml文件,更多信息可以参考google的官方文档:图层列表.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)