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

2024-02-17

我有一个ScrollView在另一个视图之上(与Buttons). The ScrollView占据了整个屏幕并遮挡了屏幕下方的视图。

在我的应用程序中的某个时刻我需要ScrollView被禁用(但仍然可见)并将所有触摸事件传输到Buttons位于以下的ScrollView。我怎样才能做到这一点?有些观点喜欢Buttons禁用时会自动执行此操作,但ScrollView没有这样做。


尝试实现自己的ScrollView它有一个标志来指示状态(禁用/启用),并且还覆盖onTouchEvent and dispatchTouchEvent让触摸事件通过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);
    }

}

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

随机推荐