I am using a SeekBar
in my Android app. When a user single taps anywhere on the SeekBar
, its progress value is changed. I only want the progress value to change when the user slides the SeekBar
thumb (just like a UISlider
in iOS).
I have tried setting the clickable
property of the SeekBar
to false but that didn't work. How can I achieve the desired behavior?
I faced the same issue this week and I resolved it using a custom SeekBar: following my code:
public class Slider extends SeekBar {
private Drawable mThumb;
public Slider(Context context) {
super(context);
}
public Slider(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
public void setThumb(Drawable thumb) {
super.setThumb(thumb);
mThumb = thumb;
}
@Override
public boolean onTouchEvent(MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN) {
if (event.getX() >= mThumb.getBounds().left
&& event.getX() <= mThumb.getBounds().right
&& event.getY() <= mThumb.getBounds().bottom
&& event.getY() >= mThumb.getBounds().top) {
super.onTouchEvent(event);
} else {
return false;
}
} else if (event.getAction() == MotionEvent.ACTION_UP) {
return false;
} else {
super.onTouchEvent(event);
}
return true;
}}
Hope this helps