Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/193.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Xamarin中LayoutInDisplayCutoutMode存在问题_Android_Xamarin_Xamarin.android_Android 9.0 Pie - Fatal编程技术网

Android Xamarin中LayoutInDisplayCutoutMode存在问题

Android Xamarin中LayoutInDisplayCutoutMode存在问题,android,xamarin,xamarin.android,android-9.0-pie,Android,Xamarin,Xamarin.android,Android 9.0 Pie,在Xamarin.Android中设置剪切模式的属性有一个奇怪的问题。我想在我的应用程序中添加对剪切模式的支持,因此我更新了项目以使用SDK 9.0,并在我的活动中添加了这一行: Window.Attributes.LayoutInDisplayCutoutMode = LayoutInDisplayCutoutMode.ShortEdges; 我的项目可以编译,但当它运行时,我会在上面的一行中出现此异常: Java.Lang.NoSuchFieldError: no "I" field "l

在Xamarin.Android中设置剪切模式的属性有一个奇怪的问题。我想在我的应用程序中添加对剪切模式的支持,因此我更新了项目以使用SDK 9.0,并在我的活动中添加了这一行:

Window.Attributes.LayoutInDisplayCutoutMode = LayoutInDisplayCutoutMode.ShortEdges;
我的项目可以编译,但当它运行时,我会在上面的一行中出现此异常:

Java.Lang.NoSuchFieldError: no "I" field "layoutInDisplayCutoutMode" in class "Landroid/view/WindowManager$LayoutParams;" or its superclasses
我的项目设置是:

Compile using Android version: Android 9.0 (Pie)

Minimum Android version: Android 4.3 (API Level 18)

Target Android version: Android 9.0 (API Level 28)

所有nuget库都是最新的。

LayoutInDisplayCutoutMode
已添加到API级别28(Pie)中

对于剪切模式(
AndroidX.core.view.DisplayCutoutCompat
),通过“新的”
AndroidX
“Compat”库提供了对旧设备API的支持,但Microsoft/Xamarin尚未发布对它们的公共支持

围绕这一特性缺口,有许多基于github的问题(比如新AndroidX的WorkManager和其他我必须创建自己的绑定…)

现在,您可以执行API级别检查

if (Android.OS.Build.VERSION.SdkInt >= Android.OS.BuildVersionCodes.P)
{
    Window.Attributes.LayoutInDisplayCutoutMode = LayoutInDisplayCutoutMode.ShortEdges;
}
在AndroidP中,我们添加了API,让您可以管理应用程序如何使用显示剪切区域,以及检查是否存在剪切并获取其位置

对于运行安卓8.1(API 27)的设备,我们还向后移植了layoutInDisplayCutoutMode活动主题属性,以便您可以控制剪切区域中内容的显示。但是,请注意,运行Android 8.1或更低版本的设备的支持取决于设备制造商

为了便于跨API级别管理cutout实现,我们还在AndroidX库中添加了DisplayCutoutCompat,该库现在可以通过SDK管理器获得