2012-02-21 26 views

回答

1

我不知道任何内置选项允许你做你正在寻找的东西,但你可以很容易地扩展默认的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的源代码并查看它总是很好地调用此方法来设置可绘制的拇指 - 对我们很方便。 :)

触摸事件的处理基本上非常简单:只需测试触摸坐标是否位于可绘制拇指的边界框内。显然,如果你有拇指环,你可以应用一个稍微不同的测试,但这个想法应该清楚。如果触摸事件不在拇指上,只需返回正在处理的内容,不要传播它。