0

我有一个自定义类的代码,它允许 2dscrolling... 之类的。一切都合我的心意,除了一件事。当点击屏幕时,水平滚动(horizo​​ntalscrollview 嵌套在这个视图中)仍然停止。但是,触摸屏幕时不再停止垂直滚动。我怎样才能做到这一点?我应该将代码添加到我的customscrollingview 还是添加到活动的java 中?

import android.content.Context;
import android.util.AttributeSet;
import android.view.GestureDetector;
import android.view.GestureDetector.SimpleOnGestureListener;
import android.view.MotionEvent;
import android.view.View;
import android.widget.ScrollView;

public class ParentScrollView extends ScrollView {
private GestureDetector mGestureDetector;
View.OnTouchListener mGestureListener;

@SuppressWarnings("deprecation")
public ParentScrollView(Context context, AttributeSet attrs) {
    super(context, attrs);
    mGestureDetector = new GestureDetector(new YScrollDetector());
    setFadingEdgeLength(0);
}

@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
    if( mGestureDetector.onTouchEvent(ev)&super.onInterceptTouchEvent(ev)){
        return true;
    }else{

        return false;
    }
}

// Return false if we're scrolling in the x direction  
class YScrollDetector extends SimpleOnGestureListener {
    @Override
    public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float     
    distanceY) {
        if(Math.abs(distanceY) > Math.abs(distanceX)) {
            return true;
        }
        return false;
    }
   }
 }
4

1 回答 1

0

我用了

@Override 
public boolean onTouchEvent(MotionEvent ev) 
{ 
switch (ev.getAction()) 
   {
   case MotionEvent.ACTION_UP: this.smoothScrollBy(0, 0); 
   break; 
   } 
   return super.onTouchEvent(ev); }

现在它更可行了。滚动不太可能表现得好像它已被“抛出”。

于 2013-10-16T23:08:48.417 回答