2

我对 Android onGestureListener 有一些问题,我有 3 个线性布局在线性布局中水平相邻,线性布局位置设置为中间布局 onCreate,中间布局内部还包含一个列表视图,我想要发生的是当我向左或向右滑动布局移动时,当我尝试在其中包含列表视图的线性布局上向左或向右滑动时,这似乎没有拾取手势,但如果我向右或向左滑动其他没有任何内容的视图会拾取手势并且视图会相应地进行动画处理,以前有没有人遇到过这个问题或知道如何解决它?任何帮助都会有很大帮助,谢谢

@Override
public boolean onTouchEvent(MotionEvent event) {
    // TODO Auto-generated method stub
    return gestureDetector.onTouchEvent(event);
}

SimpleOnGestureListener simpleOnGestureListener = new SimpleOnGestureListener() {

    @Override
    public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
            float velocityY) {

        float sensitvity = 50;
        if ((e1.getX() - e2.getX()) > sensitvity) {
            slideLeft();
        } else if ((e2.getX() - e1.getX()) > sensitvity) {
            slideRight();
        }

        return true;
    }

};

private void slideRight() {

    if (swipeDirection > -1) {
        if (swipeDirection == 0) {
            layoutContainer.animate().translationX(theDistance - 0)
            .setDuration(500);
        } else {
            //go to home
            layoutContainer.animate().translationX(0).setDuration(500);
        }

        swipeDirection--;
    }

}

private void slideLeft() {

    if (swipeDirection < 1) {
        if (swipeDirection == 0) {
            layoutContainer.animate().translationX(0 - theDistance)
            .setDuration(500);
        } else {
            layoutContainer.animate().translationX(0).setDuration(500);
        }

        swipeDirection++;
    }

}
4

1 回答 1

0

ListView本身已经内置了一个手势监听器(用于滚动列表),并且可能onItemClickListener在列表中的各个项目上也有一个。这可能会干扰您对整个布局的滑动行为。

到目前为止,Pinhassi 在这里解释的解决方案对我来说效果最好: Android Swipe on List

可能您需要扩展onItemClickListener您的 ListView 并包括上面提到的滑动检测器。此外,@Override在您声明的行前面onItemClick可能需要覆盖 listview 侦听器。这样,您将维护可单击的列表项,并且可以对它们执行滑动。

于 2013-03-21T20:46:41.457 回答