2010-08-30 5 views
2

Я создаю Scrollview с 10 макетами. Я хочу изменить положение макета, перетащив его.Android-Scrollview: изменение положения макета путем перетаскивания

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) Как отключить прокрутку прокрутки, когда я перетаскиваю свой макет?

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

Благодаря

+0

Это не особенность это будет легко (если вообще) реализовано, насколько я знаю. Вы можете попробовать установить scrollview как не настраиваемый. – Falmarri

ответ

1

Override 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 случаев

Смежные вопросы