.NET MAUI .NET 7中Editor弹出键盘时布局无法正确调整(.NET 6正常)
.NET 7中MAUI布局键盘适配问题的原因及解决方法
问题原因
.NET 7的MAUI框架调整了默认的软键盘交互模式:在.NET 6中,默认采用Resize模式,当Editor弹出键盘时,系统会重新计算页面的可用显示空间,Grid中设置为Star高度的中间行会自动收缩以适配剩余空间;而.NET 7将默认模式改为了Pan,此时键盘弹出时系统仅会将整个页面向上平移以露出输入框,不会调整布局元素的尺寸,因此出现了和.NET 6不同的表现。
解决方案
需要手动将页面的软键盘交互模式改回Resize,有两种常用方式:
方式一:通过MAUI平台特定代码设置
在创建ContentPage时,针对Android平台添加模式配置:
MainPage = new ContentPage { Content = grid } #if ANDROID .On<Android>().SetWindowSoftInputModeAdjust(WindowSoftInputModeAdjust.Resize) #endif;
方式二:在Android项目中全局配置
打开Android平台项目下的Platforms/Android/MainActivity.cs,在OnCreate方法中添加如下代码:
protected override void OnCreate(Bundle savedInstanceState) { base.OnCreate(savedInstanceState); // 设置软键盘交互模式为Resize Window.SetSoftInputMode(Android.Views.SoftInput.AdjustResize); }
两种方式都能恢复.NET 6中的布局适配行为,让键盘弹出时Grid的中间Star行自动收缩。
内容的提问来源于stack exchange,提问作者SpinLock
相关产品推荐
相关产品推荐

