私はタッチ可能なビューを表し、スライドバーを描く次のクラスを持っています。触れているときのACTION_CANCEL
public class SlideBar extends View {
private int progress;
private int max;
private Paint background;
private Paint upground;
private RectF bar;
private boolean firstDraw;
public SlideBar(Context context, AttributeSet attrs) {
super(context, attrs);
progress = 0;
upground = new Paint();
upground.setColor(Color.parseColor("#C2296C"));
background = new Paint();
background.setColor(Color.parseColor("#777777"));
}
private void onFirstDraw() {
max = getWidth();
bar = new RectF(0, 19, max, 21);
}
public void onDraw(Canvas canvas) {
if (!firstDraw) {
onFirstDraw();
progress = max;
firstDraw = true;
}
canvas.save();
canvas.drawRoundRect(bar, 5, 5, background);
canvas.drawCircle(progress, 20, 9, upground);
canvas.restore();
}
public void setValue(int value) {
progress = value;
}
public boolean onTouchEvent(MotionEvent evt) {
System.out.println(evt.getAction());
progress = (int) evt.getX();
invalidate();
return false;
}
}
でも触れると、それをドラッグしたときに、私はACTION_DOWNを受け、一部のACTION_MOVEsはその後ACTION_CANCELとなし、さらにイベントを受け取ります。
なぜそれが起こるのですか?私はイベントをキャンセルしてドラッグバーを維持することはできません。
は私がイベントをインターセプトし、それらのすべてを作ることができるか、PopupWindowにこのコンポーネントを追加するとき、これはのみ発生することを実現しましたそれは子供ですか? –
私はそれが私のイベントをつかんでいるHorizontalScrollViewだと認識しました。 –
https://www.youtube.com/watch?v=EZAoJU-nUyI – kouretinho