android - 滚动+点击后 ScrollView 停止工作

标签 android scrollview

我有一个自定义的Scrollview,Horizo​​ntalScrollview,里面是动态表格。表格中的每一行都有多个带有 onclicklisteners 的 TextView。

如果我在 Y 方向滑动,然后点击屏幕一次,就会出现问题。垂直滚动(ScrollView)将停止工作,但水平滚动仍然有效。请赐教。

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 和 textview:

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

感谢您的任何建议。

最佳答案

也许问题出在你的 onInterceptTouchEvent 上。如果返回 false,则不会为您触发所有其他事件(移动、取消和向上)。尝试更换 super.onInterceptTouchEvent(ev)&& mGestureDetector.onTouchEvent(ev) 和 super.onInterceptTouchEvent(ev)|| mGestureDetector.onTouchEvent(ev)

关于android - 滚动+点击后 ScrollView 停止工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12222886/

相关文章:

java - 将自定义 View 放入自定义 ScrollView 中

ios - Xcode 8.1 : No options for update frames on changing constraints

android - 在 recyclerview 中填充 GridView

android - 如何在特定的LinearLayout中添加Canvas?

java - "Floating"可滚动容器内 View

javascript - 在 React Native 中,如何获取自定义组件的 Y 偏移量,然后将 ScrollView 滚动到它的位置?

android - 当 subview 的内容更改时, ScrollView 不会调整大小

android - 如何找出导致 BadTokenException 的原因

android - 如果调用 Activity 的 showDialog 会怎样?如果是, Activity 是否会调用 onPause 为什么?

C#/Java - 从 Android 模拟器使用 WCF 服务