如何暂时禁用屏幕上的所有触摸并再次启用它

问题描述 投票:0回答:2

如何在Fragments上运行进程时禁用所有触摸事件。我们的设备内置打印机。在打印和快速点击屏幕时,它会使应用程序崩溃,我如何确保屏幕不可触摸?我试过用

getActivity().getWindow().setFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE,WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE);

getActivity().getWindow().clearFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE);

崩溃仍然发生。我还尝试在我的父LinearLayout上添加一个ID,并尝试启用和禁用它。但是,没有任何反应?它的替代代码是什么?谢谢!

错误日志

02-26 18:16:37.000 18941-18946/com.jti.mikee.jti_pos I/dalvikvm: threadid=3: reacting to signal 3 02-26 18:16:37.060 18941-18946/com.jti.mikee.jti_pos I/dalvikvm: Wrote stack traces to '/data/anr/traces.txt' 02-26 18:16:37.110 18941-18941/com.jti.mikee.jti_pos I/HAL_JNI: - native_printer_close(), result = 0 02-26 18:16:37.130 18941-18941/com.jti.mikee.jti_pos I/Choreographer: Skipped 357 frames! The application may be doing too much work on its main thread.02-26 18:16:40.740 18941-18941/com.jti.mikee.jti_pos A/libc: Fatal signal 6 (SIGABRT) at 0x00000419 (code=0), thread 18941 (i.mikee.jti_pos)

XML布局

https://ghostbin.com/paste/ob2fa

android
2个回答
1
投票

你可以通过使用技巧来做。

  • 在根视图上方显示透明视图以禁用单击。
  • 隐藏该视图以启用点击

谢谢


0
投票

覆盖活动中的dispatchTouchEvent

    @Override
    public boolean dispatchTouchEvent(MotionEvent ev) {
        if (!isSomethingInProcess) {
            return super.dispatchTouchEvent(ev);
        } else {
            return false;
        }
    }
© www.soinside.com 2019 - 2024. All rights reserved.