Android常规调整窗口的方法
一般的Android开发主要通过调整AndroidMainfest.xml的代码(属性值)来调整;比如在application中调整android:windowSoftInputMode的值,需要注意大小写,错误时生成也会报错,代码如下:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionCode="1" android:versionName="V1.0">
<application android:allowBackup="true"
android:icon="@mipmap/appicon"
android:supportsRtl="true"
android:label="疑心暗鬼"
android:windowSoftInputMode="adjustResize">
</application>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
</manifest>
MAUI的虚拟键盘自动调整方法(还在看)
常规意义调整安卓文件会与Maui的配置属性重复
根据实际调整了MAUI的AndroidMainfest.xml文件发现,系统会报系统设置了两遍MAUI的虚拟键盘属性,报错内容如下:
提示内容大致时,不能同时把软键盘设置为adjustresize和adjustPan属性(截图中顺便展示了所有android:windowSoftInputMode的属性值)
Maui的虚拟键盘属性调整方法:
先说总结,实际上resize和pan的两个属性,都会对当前控件有一定的 遮盖作用,具体遮盖的原理和规避方法暂时没研究明白。相比之下,默认的pan属性还比较实用一些,因为被顶上去的控件关闭软键盘还能看得见;但是resize的遮盖基本是永久性的,开启软键盘即触发完全遮蔽,另外会引发image等属性的变形;
所以最理想的方法可能还是以pan属性为前提,重写软键盘的方法;
resize如图,遮住了输入框控件,背景画面自动压缩变形;
pan如图,所有控件往上顶,但是背景不受影响;
Maui的虚拟键盘属性似乎就只有Resize和Pan两种属性,使用的方法有两种:
1、在APP.XMAL的application下加入如下代码:
xmlns:android="clr-namespace:Microsoft.Maui.Controls.PlatformConfiguration.AndroidSpecific;assembly=Microsoft.Maui.Controls"
android:Application.WindowSoftInputModeAdjust="Resize"
2、使用 Fluent API 从 C# 使用它(还没有验证成功)
using Microsoft.Maui.Controls.PlatformConfiguration.AndroidSpecific;
...
App.Current.On<Microsoft.Maui.Controls.PlatformConfiguration.Android>().UseWindowSoftInputModeAdjust(WindowSoftInputModeAdjust.Resize);
Maui软键盘打开、关闭、及读取是否打开或关闭方案
方法一(inputview.KeyboardExtensions)
每个inputview类型的控件,都可以调用keyboardExtensions来查看键盘是否展示,需要开启或者关闭开启,比如text控件,editer控件一类可以输入文字的控件;
方法二(CommunityToolkit.Maui Nuget包,从这个角度看稍微有点多余)
更新:这个包主要实现了即使在没有控件为主的条件下也可以打开或者关闭软键盘,除此之外应该有更重要的作用,单从软键盘显示关闭层面看有点多余
根据官方文档显示,是通过安装Nuget管理包实现的,Nuget管理包名称:CommunityToolkit.Maui
安装后,需要在MauiProgram.cs中应用安装的包,如截图(安装Nuget包后会有readme文档提醒):
文档地址:https://learn.microsoft.com/zh-cn/dotnet/communitytoolkit/maui/extensions/keyboard-extensions
检查软键盘是否打开or关闭,获得bool返回值true or false;
bool keyboardtype = CommunityToolkit.Maui.Core.Platform.KeyboardExtensions.IsSoftKeyboardShowing(MessageEditor);
其他打开或关闭的功能目前没用上,可以自行看文档调整;