43 lines
1.4 KiB
C#
43 lines
1.4 KiB
C#
using Android.Content;
|
|
using Android.Graphics;
|
|
using Pixiview.Droid.Renderers;
|
|
using Pixiview.UI;
|
|
using Xamarin.Forms;
|
|
using Xamarin.Forms.Platform.Android;
|
|
|
|
[assembly: ExportRenderer(typeof(CardView), typeof(CardViewRenderer))]
|
|
namespace Pixiview.Droid.Renderers
|
|
{
|
|
public class CardViewRenderer : VisualElementRenderer<CardView>
|
|
{
|
|
public CardViewRenderer(Context context) : base(context)
|
|
{
|
|
}
|
|
|
|
protected override void OnElementChanged(ElementChangedEventArgs<CardView> e)
|
|
{
|
|
base.OnElementChanged(e);
|
|
|
|
var element = e.NewElement;
|
|
if (element != null)
|
|
{
|
|
var radius = element.CornerRadius;
|
|
if (radius > 0)
|
|
{
|
|
//var scale = Resources.DisplayMetrics.Density;
|
|
//OutlineProvider = new CornerRadiusOutlineProvider(element, radius, scale);
|
|
//ClipToOutline = true;
|
|
|
|
var density = Resources.DisplayMetrics.Density;
|
|
|
|
Elevation = (float)(element.ShadowOffset.Height + 2) * density;
|
|
|
|
var drawable = new RoundCornerDrawable(radius * density);
|
|
drawable.SetColorFilter(element.BackgroundColor.ToAndroid(), PorterDuff.Mode.Src);
|
|
((Android.Views.View)this).SetBackground(drawable);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|