Skip to content

Commit

Permalink
[Tizen] Fix material style slider issue (xamarin#12708)
Browse files Browse the repository at this point in the history
  • Loading branch information
shyunMin authored Nov 5, 2020
1 parent defad08 commit 3a47d0f
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 9 deletions.
23 changes: 17 additions & 6 deletions Xamarin.Forms.Material.Tizen/MaterialSliderRenderer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -8,20 +8,31 @@ namespace Xamarin.Forms.Material.Tizen
{
public class MaterialSliderRenderer : SliderRenderer
{
protected override void OnElementChanged(ElementChangedEventArgs<Slider> e)
protected override ElmSharp.Slider CreateNativeControl()
{
if (Control == null)
{
SetNativeControl(new MSlider(Forms.NativeParent));
}
base.OnElementChanged(e);
return new MSlider(Forms.NativeParent);
}

protected override void UpdateMinimumTrackColor()
{
var color = Element.MinimumTrackColor.IsDefault ? MColors.Current.PrimaryColor : Element.MinimumTrackColor.ToNative();
Control.SetPartColor(Parts.Slider.Bar, color);
Control.SetPartColor(Parts.Slider.BarPressed, color);
}

protected override void UpdateMaximumTrackColor()
{
var color = Element.MaximumTrackColor.IsDefault ? MColors.Current.PrimaryColor.WithAlpha(0.5) : Element.MaximumTrackColor.ToNative();
Control.SetPartColor(Parts.Widget.Background, color);
}

protected override void UpdateThumbColor()
{
var color = Element.ThumbColor.IsDefault ? MColors.Current.PrimaryColor : Element.ThumbColor.ToNative();
Control.SetPartColor(Parts.Slider.Handler, color);
Control.SetPartColor(Parts.Slider.HandlerPressed, color);
Control.SetPartColor(Parts.Slider.Handler2, color.WithAlpha(0.32));
}

}
}
12 changes: 9 additions & 3 deletions Xamarin.Forms.Platform.Tizen/Renderers/SliderRenderer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -16,21 +16,27 @@ protected override void OnElementChanged(ElementChangedEventArgs<Slider> e)
{
if (Control == null)
{
SetNativeControl(new ESlider(Forms.NativeParent));
SetNativeControl(CreateNativeControl());
Control.ValueChanged += OnValueChanged;
Control.DragStarted += OnDragStarted;
Control.DragStopped += OnDragStopped;
_defaultMinColor = Control.GetBarColor();
_defaultMaxColor = Control.GetBackgroundColor();
_defaultThumbColor = Control.GetHandlerColor();
}

UpdateMinimum();
UpdateMaximum();
UpdateValue();
UpdateSliderColors();
base.OnElementChanged(e);
}

protected virtual ESlider CreateNativeControl()
{
return new ESlider(Forms.NativeParent);
}

protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e)
{
if (e.PropertyName == Slider.MinimumProperty.PropertyName)
Expand Down Expand Up @@ -109,13 +115,13 @@ protected void UpdateMaximum()
Control.Maximum = Element.Maximum;
}

protected void UpdateMinimumTrackColor()
protected virtual void UpdateMinimumTrackColor()
{
var color = Element.MinimumTrackColor.IsDefault ? _defaultMinColor : Element.MinimumTrackColor.ToNative();
Control.SetBarColor(color);
}

protected void UpdateMaximumTrackColor()
protected virtual void UpdateMaximumTrackColor()
{
Control.SetBackgroundColor(Element.MaximumTrackColor.IsDefault ? _defaultMaxColor : Element.MaximumTrackColor.ToNative());
}
Expand Down

0 comments on commit 3a47d0f

Please sign in to comment.