Android ScrollView滑動事件和子控件點擊事件衝突

問題描述:ide

父控件是一個ScrollView,而後上面排滿了按鈕,相似於支付寶事件

這樣,按鈕都有onclick事件,這樣滑動的時候若是接觸點在按鈕上,ScrollView就滑不動了。支付寶

解決方案是重寫ScrollView 的onInterceptTouchEvent方法:get

public class PersonScrollView extends ScrollView{

    public PersonScrollView(Context context) {
        super(context);
    }

    @Override
    public boolean onInterceptTouchEvent(MotionEvent ev) {
        if (ev.getAction() == MotionEvent.ACTION_MOVE) {
                return true;
        }
        return false;
    }
}

原理很簡單,就是事件在響應鏈裏面是一直傳遞到葉子控件才進行處理,而在個人這個場景裏,觸點在按鈕上的時候事件的葉子節點就是按鈕,因此ScrollView不會響應滑動事件,解決思路就是在滑動事件傳遞到ScrollView的時候就進行攔截響應,再也不往下傳遞。io

相關文章
相關標籤/搜索