Mik*_*sen 7 custom-renderer xamarin.android xamarin xamarin.forms
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;
}
}
Run Code Online (Sandbox Code Playgroud)
在Android上制作类似版本会给我带来麻烦,因为我对Android原生的知识有限.谁能告诉我要看什么,也许是一些很好的代码示例?我没有找到任何看起来与此类似的东西.
Gra*_*eng 11
在Android平台上它可以很容易,但首先,你需要在DrawableAndroid资源的文件夹下创建你的影子.例如:
<?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>
Run Code Online (Sandbox Code Playgroud)
将此文件命名为"shadow.xml"并将其放在DrawableAndroid项目的文件夹下,然后在您的RatingInfoFrameRenderer:
public class RatingInfoFrameRenderer : FrameRenderer
{
protected override void OnElementChanged(ElementChangedEventArgs<Frame> e)
{
base.OnElementChanged(e);
if (e.NewElement != null)
{
ViewGroup.SetBackgroundResource(Resource.Drawable.shadow);
}
}
}
Run Code Online (Sandbox Code Playgroud)
要更改阴影样式,可以修改shadow.xml文件,有关此内容的更多信息,可以参考google的官方文档:LayerList.
| 归档时间: |
|
| 查看次数: |
6913 次 |
| 最近记录: |