0
我在滚动视图内有一个搜索栏。当某个人在滚动滑块更改期间意外触摸滑块时。我只想在拖动拇指时更改滑块值。谁能帮我这个?在滚动视图内使用seekbar问题
我在滚动视图内有一个搜索栏。当某个人在滚动滑块更改期间意外触摸滑块时。我只想在拖动拇指时更改滑块值。谁能帮我这个?在滚动视图内使用seekbar问题
我不知道任何内置选项允许你做你正在寻找的东西,但你可以很容易地扩展默认的SeekBar实现并覆盖触摸事件的处理。基本实现看起来有点像这样:
public class ThumbOnlySeekBar extends SeekBar {
private Drawable mThumb;
public ThumbOnlySeekBar(Context context) {
super(context);
}
public ThumbOnlySeekBar(Context context, AttributeSet attrs) {
super(context, attrs);
}
public ThumbOnlySeekBar(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
@Override public void setThumb(Drawable thumb) {
super.setThumb(thumb);
mThumb = thumb;
}
@Override public boolean onTouchEvent(MotionEvent event) {
if (!mThumb.getBounds().contains((int)event.getX(), (int)event.getY())) return true;
return super.onTouchEvent(event);
}
}
由于搜索栏没有一个getThumb()
方法返回用于拇指提拉,它需要覆盖setTumb(...)
跟踪拇指套。您可以查找SeekBar的源代码并查看它总是很好地调用此方法来设置可绘制的拇指 - 对我们很方便。 :)
触摸事件的处理基本上非常简单:只需测试触摸坐标是否位于可绘制拇指的边界框内。显然,如果你有拇指环,你可以应用一个稍微不同的测试,但这个想法应该清楚。如果触摸事件不在拇指上,只需返回正在处理的内容,不要传播它。