1

カスタム Scrollview、Horizo​​ntalScrollview があり、内部は動的テーブルです。テーブルの各行には、onclicklisteners を持つ複数の TextView があります。

Y方向にスワイプしてから画面を1回タップすると問題が発生します。垂直スクロール (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) {
    return super.onInterceptTouchEvent(ev) && mGestureDetector.onTouchEvent(ev);
}

// 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;
    }
}

}

TableRowView とテキストビュー:

public void addRow(String[] data, int[] rowId) {
    for (int i = 0; i < data.length; i++) {
        TextView tv = parseTextView(data[i]);
        tv.setId(rowId[i]);
        tv.setFocusable(false);//try solving with this, no luck.
        tv.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if(ChooseTableActivity.class == (v.getContext().getClass())){
                    ((ChooseTableActivity) v.getContext())
                            .onClickRowCell(v);
                    //passes view to activiy class that does nothing yet.
                }
            }
        });
        this.addView(tv);
    }
}

アドバイスをありがとう。

4

1 に答える 1

1

onInterceptTouchEvent の問題かもしれません。false が再発した場合、他のすべてのイベント ( move 、 cancel 、 up ) はトリガーされません。super.onInterceptTouchEvent(ev) && mGestureDetector.onTouchEvent(ev) を super.onInterceptTouchEvent(ev) || に置き換えてみてください。mGestureDetector.onTouchEvent(ev)

于 2012-08-31T22:27:10.173 に答える