Деактивирайте превъртането на ListView при плъзгане на ViewPager

има ли начин да заключите вертикалното превъртане на ListView, докато превъртате елемент, който е ViewPager? Или може би да промените чувствителността на хоризонталното превъртане на ViewPager?

Благодаря.

ПОСЛЕДНА РЕДАКЦИЯ

Ето моето актуализирано решение. Благодаря за отговорите ви Масуд Дадаши, вашите коментари най-накрая ме накараха да намеря решение на моя проблем.

Ето моя персонализиран клас ListView:

public class FolderListView extends ListView {

    private float xDistance, yDistance, lastX, lastY;

    // If built programmatically
    public FolderListView(Context context) {
        super(context);
        // init();
    }

    // This example uses this method since being built from XML
    public FolderListView(Context context, AttributeSet attrs) {
        super(context, attrs);
        // init();
    }

    // Build from XML layout
    public FolderListView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        // init();
    }

    @Override
    public boolean onInterceptTouchEvent(MotionEvent ev) {

        switch (ev.getAction()) {
        case MotionEvent.ACTION_DOWN:
            xDistance = yDistance = 0f;
            lastX = ev.getX();
            lastY = ev.getY();
            break;
        case MotionEvent.ACTION_MOVE:
            final float curX = ev.getX();
            final float curY = ev.getY();
            xDistance += Math.abs(curX - lastX);
            yDistance += Math.abs(curY - lastY);
            lastX = curX;
            lastY = curY;
            if (xDistance > yDistance)
                return false;
        }

        return super.onInterceptTouchEvent(ev);

    }
}

person Adrian Olar    schedule 25.07.2013    source източник
comment
Вижте тази публикация stackoverflow.com/questions/7900860/   -  person An-droid    schedule 25.07.2013
comment
благодаря, ще разгледам това.   -  person Adrian Olar    schedule 25.07.2013


Отговори (1)


да, има. създайте друг customListView клас, разширен от ListView и заменете неговия манипулатор на събития dispatchTouchEvent по следния начин:

@Override
public boolean dispatchTouchEvent(MotionEvent ev){
   if(ev.getAction()==MotionEvent.ACTION_MOVE)
      return true;
   return super.dispatchTouchEvent(ev);
}

след това вместо това използвайте този customListView

person Masoud Dadashi    schedule 25.07.2013
comment
Дадох ви пример за деактивиране на превъртане, но очевидно не искам да съм достатъчно ясен. В този отменен метод трябва да откриете жеста и да деактивирате превъртането, ако е SWIPE. тъй като кодът е наличен на адреса по-долу, не го дублирам. погледнете този адрес: stackoverflow.com/questions /2646028/ - person Masoud Dadashi; 25.07.2013
comment
Актуализирах публикацията си, следвах вашите инструкции и най-накрая успях да постигна желаната функционалност. Много благодаря! - person Adrian Olar; 25.07.2013