Seekbar'ın sadece thumb image ile değiştirilmesi sağlama
Horizontal bir listview içinde vertical bir seekBar kullanıyorum. Seekbar da default olarak progressDrawable alanında herhangi bir yere dokununca OnSeekBarChangeListener event tetiklenmekte ve thumb image dokunulan yere konumlanmakta. Horizontal listview de sağa veya sola scroll yapmaya çalışınca seekBar a dokunulduğu için değeri değişiyor. Ben sadece thumb image a dokunup değerinin değiştirilmesini istiyorum. Yani seekbar da thumb image dışında herhangi bir yere dokunulunca değerinin sabit kalması gerekiyor. Bunu nasıl engelleyebiliriz. Teşekkürler.
[code]
public class VerticalSeekBar extends SeekBar {
public VerticalSeekBar(Context context) {
super(context);
}
public VerticalSeekBar(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
public VerticalSeekBar(Context context, AttributeSet attrs) {
super(context, attrs);
}
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
super.onSizeChanged(h, w, oldh, oldw);
}
@Override
protected synchronized void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(heightMeasureSpec, widthMeasureSpec);
setMeasuredDimension(getMeasuredHeight(), getMeasuredWidth());
}
protected void onDraw(Canvas c) {
c.rotate(-90);
c.translate(-getHeight(),0);
super.onDraw(c);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
if (!isEnabled()) {
return false;
}
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
case MotionEvent.ACTION_UP:
case MotionEvent.ACTION_MOVE:
int i=0;
i=getMax() - (int) (getMax() * event.getY() / getHeight());
setProgress(i);
onSizeChanged(getWidth(), getHeight(), 0, 0);
break;
case MotionEvent.ACTION_CANCEL:
break;
}
return true;
}
Drawable mThumb;
@Override
public void setThumb(Drawable thumb) {
super.setThumb(thumb);
mThumb = thumb;
}
public Drawable getSeekBarThumb() {
return mThumb;
}
public void updateThumb(){
onSizeChanged(getWidth(), getHeight(), 0, 0);
}
}
[/code]