android - 如何将触摸事件传输到 RelativeLayout 下方的 View ?

标签 android events touch android-scrollview

我在另一个 View 之上有一个 ScrollView(带有 Buttons)。 ScrollView 占据了整个屏幕并遮挡了其下方的 View 。

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

最佳答案

尝试实现你自己的 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);
    }

}

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

关于android - 如何将触摸事件传输到 RelativeLayout 下方的 View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12834737/

相关文章:

java - 如何将项目添加到 Android 的顶部菜单

android - 如何在android中更改蓝牙适配器的扫描模式?

javascript - 在触摸屏上拖放

objective-c - 如何独立于 CALayer 的边界缩放 CALayer 的图像

Android - 触摸绘图

android - 在android webview中加载静态页面

java - 工具栏上添加的操作按钮未显示

javascript - 如何在 Javascript 或 jQuery 中暂时禁用事件

Java、Jacob 和 Microsoft Outlook 事件 : Receiving "Can' t find event iid"Error

php - 正在执行 MySQL 计划?