material-range-bar icon indicating copy to clipboard operation
material-range-bar copied to clipboard

How to prevent overlapping two sliders

Open swatiomar opened this issue 5 years ago • 4 comments

I want to prevent the overlapping issue. As Left slider don't pass the right slider or not overlap the right slider. How to do this?

swatiomar avatar Jul 26 '19 10:07 swatiomar

I solved it by implementing this little solution, hope it helps.

    int preMin = -1;
    int preMax = -1;

rangebar.setOnRangeBarChangeListener(new RangeBar.OnRangeBarChangeListener() {
            @Override
            public void onRangeChangeListener(final RangeBar rangeBar, int leftPinIndex,
                                              int rightPinIndex, String leftPinValue, String rightPinValue) {
                int diff = rightPinIndex - leftPinIndex;
                if (diff < 3) {
                    rangebar.setEnabled(false);
                    if (leftPinIndex != preMin || rightPinIndex != preMax) {
                        rangeBar.setRangePinsByIndices(preMin, preMax);
                    }
                    AlertDialog.Builder alert = new AlertDialog.Builder(MainActivity.this);
                    alert.setNegativeButton(getResources().getString(android.R.string.ok), new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            rangeBar.setEnabled(true);
                            dialog.dismiss();
                        }
                    });
                    alert.setCancelable(true);
                    alert.setMessage(Html.fromHtml("Minimum range reached!!")).show();

                } else {
                    preMin = leftPinIndex;
                    preMax = rightPinIndex;
                }


                // More of what you desire
            }

            @Override
            public void onTouchEnded(RangeBar rangeBar) {
                Log.d("RangeBar", "Touch ended");
            }

            @Override
            public void onTouchStarted(RangeBar rangeBar) {
                Log.d("RangeBar", "Touch started");
            }
        });

Mukarrim avatar Sep 25 '19 14:09 Mukarrim

Any updates here? I also think having an option of overlap is great!

ghost avatar Feb 06 '20 02:02 ghost

Setting minThumbDistance=1 did it for me.

akshay-nak avatar Jun 23 '20 00:06 akshay-nak

Thanks for advice @akshay-nak . It worked for me :)

ramazanogunc avatar Sep 19 '22 14:09 ramazanogunc