如何将触摸事件传输到RelativeLayout下面的视图?

roi*_*erg 3 events android touch android-scrollview

我有ScrollView另一个视图(带Buttons).该ScrollView走的是整个屏幕,并模糊是它下面的视图.

在我的应用程序的某个时刻,我需要ScrollView禁用(但仍然可见)并将所有触摸事件传输到Buttons下面的ScrollView.我怎样才能做到这一点?有些视图Buttons在禁用时会自动执行此操作,但a ScrollView不会这样做.

Luk*_*rog 12

尝试实现你自己ScrollView的标志,指示状态(禁用/启用),并覆盖onTouchEventdispatchTouchEvent让触摸事件通过ScrollView.这是一个例子:

public class DisabledScrollView extends ScrollView {

    private boolean mIsDisable = false;

    // if status is true, disable the ScrollView
    public void setDisableStatus(boolean status) {
        mIsDisable = status;
    }

    @Override
    public boolean onTouchEvent(MotionEvent ev) {
        // no more tocuh events for this ScrollView
        if (mIsDisable) {
            return false;
        }       
        return super.onTouchEvent(ev);
    }

    public boolean dispatchTouchEvent(MotionEvent ev) {
        // although the ScrollView doesn't get touch events , its children will get them so intercept them.
        if (mIsDisable) {
            return false;
        }
        return super.dispatchTouchEvent(ev);
    }

}
Run Code Online (Sandbox Code Playgroud)

然后,您所要做的就是更改该标志的值.看看它是否有效.