Android 上的软键盘输入模式

此 .NET 多平台应用 UI (.NET MAUI) Android 平台专用用于设置软键盘输入区域的操作模式,且在 XAML 中通过将 Application.WindowSoftInputModeAdjust 附加属性设置为 WindowSoftInputModeAdjust 枚举值进行使用。

<Application ...
             xmlns:android="clr-namespace:Microsoft.Maui.Controls.PlatformConfiguration.AndroidSpecific;assembly=Microsoft.Maui.Controls"
             android:Application.WindowSoftInputModeAdjust="Resize">
  ...
</Application>

或者,可以使用 Fluent API 从 C# 使用它:

using Microsoft.Maui.Controls.PlatformConfiguration.AndroidSpecific;
...

App.Current.On<Microsoft.Maui.Controls.PlatformConfiguration.Android>().UseWindowSoftInputModeAdjust(WindowSoftInputModeAdjust.Resize);

此方法 Application.On<Microsoft.Maui.Controls.PlatformConfiguration.Android> 指定该特定平台的代码仅在 Android 上运行。 命名空间 Application.UseWindowSoftInputModeAdjust 中的 Microsoft.Maui.Controls.PlatformConfiguration.AndroidSpecific 方法用于设置软键盘输入区域作模式,枚举 WindowSoftInputModeAdjust 提供两个值: PanResizePan 的值使用了 AdjustPan 调整选项,当输入控件获得焦点时,该选项不会调整窗口的大小。 相反,窗口的内容会平移,以便当前焦点不会被软键盘遮盖。 该值 Resize 使用 AdjustResize 调整选项(当输入控件具有焦点时调整窗口大小)为软键盘腾出空间。

重要

.NET 10 行为更改: 在 .NET 10 中使用 WindowSoftInputModeAdjust.Resize时,可能需要设置 ContentPage.SafeAreaEdges="All" 以确保页面内容正确绕过键盘。 这是因为在 .NET 10 中,ContentPage 现在默认为 SafeAreaEdges.None(边缘到边缘),而在 .NET 9 中,它的行为更类似于 Container。 有关 .NET 10 中安全区域行为的详细信息,请参阅 安全区域布局

可以在Window上设置此平台特定项。 这样,你可以为每个打开的 Window 定义不同的软键盘输入区域操作模式。

Microsoft.Maui.Controls.PlatformConfiguration.AndroidSpecific.Application.SetWindowSoftInputModeAdjust
    (this.Window, WindowSoftInputModeAdjust.Resize);

结果是,当输入控件获得焦点时,可以设定软键盘的输入区域操作模式。

软键盘操作模式平台特定。