@@ -344,6 +344,8 @@ abstract class BaseSlider<
344344  @ NonNull  private  List <Drawable > customThumbDrawablesForValues  = Collections .emptyList ();
345345
346346  private  float  touchPosition ;
347+ 
348+   private  float  minSeparation  = 0f ;
347349  @ SeparationUnit  private  int  separationUnit  = UNIT_PX ;
348350
349351  @ NonNull 
@@ -628,7 +630,6 @@ private void validateValues() {
628630  }
629631
630632  private  void  validateMinSeparation () {
631-     final  float  minSeparation  = getMinSeparation ();
632633    if  (minSeparation  < 0 ) {
633634      throw  new  IllegalStateException (
634635          String .format (EXCEPTION_ILLEGAL_MIN_SEPARATION , minSeparation ));
@@ -2532,7 +2533,7 @@ private boolean snapThumbToValue(int idx, float value) {
25322533
25332534  /** Thumbs cannot cross each other, clamp the value to a bound or the value next to it. */ 
25342535  private  float  getClampedValue (int  idx , float  value ) {
2535-     float  minSeparation  = getMinSeparation () ;
2536+     float  minSeparation  = this . minSeparation ;
25362537    minSeparation  = separationUnit  == UNIT_PX  ? dimenToValue (minSeparation ) : minSeparation ;
25372538    if  (isRtl ()) {
25382539      minSeparation  = -minSeparation ;
@@ -2550,16 +2551,22 @@ private float dimenToValue(float dimen) {
25502551    return  ((dimen  - trackSidePadding ) / trackWidth ) * (valueFrom  - valueTo ) + valueFrom ;
25512552  }
25522553
2553-   protected  void  setSeparationUnit (int  separationUnit ) {
2554+   protected  float  getMinSeparation () {
2555+     return  minSeparation ;
2556+   }
2557+ 
2558+   protected  float  getSeparationUnit () {
2559+     return  separationUnit ;
2560+   }
2561+ 
2562+   protected  void  setMinSeparation (float  minSeparation , @ SeparationUnit  int  separationUnit ) {
2563+     this .minSeparation  = minSeparation ;
25542564    this .separationUnit  = separationUnit ;
2565+ 
25552566    dirtyConfig  = true ;
25562567    postInvalidate ();
25572568  }
25582569
2559-   protected  float  getMinSeparation () {
2560-     return  0 ;
2561-   }
2562- 
25632570  private  float  getValueOfTouchPosition () {
25642571    double  position  = snapPosition (touchPosition );
25652572
@@ -3131,6 +3138,8 @@ protected Parcelable onSaveInstanceState() {
31313138    sliderState .valueTo  = valueTo ;
31323139    sliderState .values  = new  ArrayList <>(values );
31333140    sliderState .stepSize  = stepSize ;
3141+     sliderState .minSeparation  = minSeparation ;
3142+     sliderState .separationUnit  = separationUnit ;
31343143    sliderState .hasFocus  = hasFocus ();
31353144    return  sliderState ;
31363145  }
@@ -3144,6 +3153,9 @@ protected void onRestoreInstanceState(Parcelable state) {
31443153    valueTo  = sliderState .valueTo ;
31453154    setValuesInternal (sliderState .values );
31463155    stepSize  = sliderState .stepSize ;
3156+     minSeparation  = sliderState .minSeparation ;
3157+     separationUnit  = sliderState .separationUnit ;
3158+ 
31473159    if  (sliderState .hasFocus ) {
31483160      requestFocus ();
31493161    }
@@ -3155,6 +3167,8 @@ static class SliderState extends BaseSavedState {
31553167    float  valueTo ;
31563168    ArrayList <Float > values ;
31573169    float  stepSize ;
3170+     float  minSeparation ;
3171+     @ SeparationUnit  int  separationUnit ;
31583172    boolean  hasFocus ;
31593173
31603174    public  static  final  Creator <SliderState > CREATOR  =
@@ -3184,6 +3198,8 @@ private SliderState(@NonNull Parcel source) {
31843198      values  = new  ArrayList <>();
31853199      source .readList (values , Float .class .getClassLoader ());
31863200      stepSize  = source .readFloat ();
3201+       minSeparation  = source .readFloat ();
3202+       separationUnit  = source .readInt ();
31873203      hasFocus  = source .createBooleanArray ()[0 ];
31883204    }
31893205
@@ -3194,6 +3210,8 @@ public void writeToParcel(@NonNull Parcel dest, int flags) {
31943210      dest .writeFloat (valueTo );
31953211      dest .writeList (values );
31963212      dest .writeFloat (stepSize );
3213+       dest .writeFloat (minSeparation );
3214+       dest .writeInt (separationUnit );
31973215      boolean [] booleans  = new  boolean [1 ];
31983216      booleans [0 ] = hasFocus ;
31993217      dest .writeBooleanArray (booleans );
0 commit comments