Skip to content

Instantly share code, notes, and snippets.

@xamarinskills
Created December 23, 2017 11:27
Custom Slider in Andoid Project For Xamarin forms
public class MySliderRenderer : SliderRenderer
{
protected override void OnElementChanged(ElementChangedEventArgs<Xamarin.Forms.Slider> e)
{
base.OnElementChanged(e);
if (e.OldElement != null || e.NewElement == null)
return;
var view = (CustomSlider)Element;
if (!string.IsNullOrEmpty(view.ThumbImage)||
view.ThumbColor != Xamarin.Forms.Color.Default ||
view.MaxColor != Xamarin.Forms.Color.Default ||
view.MinColor != Xamarin.Forms.Color.Default)
{
// Set Thumb Icon
Control.SetThumb(Resources.GetDrawable(view.ThumbImage));
}
Control.Thumb.SetColorFilter(view.ThumbColor.ToAndroid(), PorterDuff.Mode.SrcIn);
Control.ProgressTintList = Android.Content.Res.ColorStateList.ValueOf(view.MinColor.ToAndroid());
Control.ProgressTintMode = PorterDuff.Mode.SrcIn;
//this is for Maximum Slider line Color
Control.ProgressBackgroundTintList = Android.Content.Res.ColorStateList.ValueOf(view.MaxColor.ToAndroid());
Control.ProgressBackgroundTintMode = PorterDuff.Mode.SrcIn;
}
protected override void OnLayout(bool changed, int l, int t, int r, int b)
{
base.OnLayout(changed, l, t, r, b);
if (Android.OS.Build.VERSION.SdkInt >= Android.OS.BuildVersionCodes.JellyBean)
{
if (Control == null)
{
return;
}
SeekBar ctrl = Control;
Drawable thumb = ctrl.Thumb;
int thumbTop = ctrl.Height / 2 - thumb.IntrinsicHeight / 2;
thumb.SetBounds(thumb.Bounds.Left, thumbTop,
thumb.Bounds.Left + thumb.IntrinsicWidth, thumbTop + thumb.IntrinsicHeight);
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment