如何在.NET MAUI中调用Android原生getWindow() API以禁用触摸屏
在.NET MAUI中禁用Android触摸屏输入
实现方案
该功能属于Android平台专属特性,需通过MAUI的平台特定代码实现:
禁用触摸输入
在需要屏蔽触摸的逻辑处添加以下代码(仅在Android平台生效):
#if ANDROID using Android.Views; using Microsoft.Maui.ApplicationModel; var currentActivity = Platform.CurrentActivity; if (currentActivity != null) { // 禁用所有触摸输入,对应原生Android的FLAG_NOT_TOUCHABLE currentActivity.Window.SetFlags(WindowManagerFlags.NotTouchable, WindowManagerFlags.NotTouchable); } #endif
恢复触摸输入
若后续需要重新启用触摸功能,执行以下代码:
#if ANDROID var currentActivity = Platform.CurrentActivity; if (currentActivity != null) { // 清除禁用触摸的标记 currentActivity.Window.ClearFlags(WindowManagerFlags.NotTouchable); } #endif
重要提示
Platform.CurrentActivity是MAUI提供的获取当前Android Activity的官方API,用于替代Xamarin时代的Forms.Context。WindowManagerFlags.NotTouchable是MAUI对原生WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE的封装枚举,无需直接引用原生常量。- 必须用
#if ANDROID条件编译指令包裹代码,避免在iOS、Windows等其他平台编译报错。
内容的提问来源于stack exchange,提问作者Zenovak
相关产品推荐
相关产品推荐

