【问题标题】:Android OnGestureListener issues when view contains a listview当视图包含列表视图时,Android OnGestureListener 问题
【发布时间】:2013-03-11 11:05:57
【问题描述】:

我在使用 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++;
    }

}

【问题讨论】:

    标签: java android android-listview gesture-recognition


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-10-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多