如何禁用所有视图的触摸事件是最佳方法?
如何禁用所有视图的触摸事件是最佳方法?
整个应用程序可能无法实现此功能。您需要为每个视图覆盖onTouchEvent()方法并忽略用户输入。
Activity.dispatchTouchEvent(MotionEvent)
覆盖方法返回true
将消耗触摸并有效地实现此目的。该方法是一系列触摸方法调用中的第一个方法。<FrameLayout>
... // other views
<View
android:id="@+id/vCover"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
</FrameLayout>
然后,在您的代码中记得为该视图设置点击监听器,以便它消耗触摸事件,例如
override fun onCreate(savedInstanceState: Bundle?) {
viewBinding.vCover.setOnClickListener {}
}
这就是你所需要的全部。
当你想要启用所有视图时,只需要将封面 移除。
doNothing
。 public void doNothing(View view)
{
}
然后从我想要禁用触摸事件的所有对象的onClick
事件中调用此方法。android:onClick="doNothing"
当单击或触摸事件被触发时,不会处理任何内容。
android:shouldDisableView="True"
对于您想要禁用触摸事件的视图。