Android-Scrollview: изменить положение макета, перетаскивая - PullRequest
2 голосов
/ 30 августа 2010

Я создаю Scrollview с 10 макетом. Я хочу изменить положение макета перетаскиванием.

layout_view.setOnTouchListener(new View.OnTouchListener() { 

@Override

public boolean onTouch(View v, MotionEvent ev) {
final int action = ev.getAction();  

switch (action) {   
case MotionEvent.ACTION_DOWN: {
...

Проблема в том, что я перетаскиваю ВНИЗ / ВВЕРХ (когда я перетаскиваю вправо / влево, все работает идеально):

1) Произошло MotionEvent.ACTION_CANCEL

2) Scrollview движется

1) Как отключить прокрутку Scrollview при перетаскивании макета?

2) Есть ли у вас идеи, как оставаться в макете, не получая MotionEvent.ACTION_CANCEL?

Спасибо

1 Ответ

1 голос
/ 15 ноября 2010

Переопределите ScrollView с тем, который вы можете включить / отключить

//A scrollview which can be disabled during drag and drop
public static class OnOffScrollView extends ScrollView {
    private boolean on = true;
    public OnOffScrollView(Context context) {
        super(context);
    }

    public OnOffScrollView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
    }

    public OnOffScrollView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    //turn on the scroll view
    public void enable() {
        on=true;
    }

    //turn off the scroll view
    public void disable() {
        on = false;
    }

    @Override
    public boolean onInterceptTouchEvent(MotionEvent ev) {
        if (on) {
            return super.onInterceptTouchEvent(ev);
        }
        else {
            return false;
        }
    }
}

Отключите его в вашем MotionEvent.ACTION_DOWN случае, включите его снова в случаях MotionEvent.ACTION_CANCEL и MotionEvent.ACTION_UP

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...