Xamarin Windowservice and Displaymetrics,找不到SystemService

时间:2018-08-21 09:36:00

标签: android xamarin android-context

当我尝试浏览Android.Content.Context类中的类时,它没有显示任何SystemService,我需要获取当前屏幕的宽度和高度。

IWindowManager windowManager = Context. 
(Context.WindowService).JavaCast<IWindowManager>();

windowManager.DefaultDisplay.GetMetrics(metrics);

Console.WriteLine("Test: " + metrics.HeightPixels + 
metrics.WidthPixels);

上下文为我提供了许多不同的服务,但是没有SystemService,没有这个,我将无法获得进一步的服务。

编辑1:

 IWindowManager windowManager = CarouselPage.GetSystemService();

这不起作用,我的上下文不知道systemservice或windowservice

1 个答案:

答案 0 :(得分:-1)

  

我的上下文不知道systemservice还是windowservice

您拥有的上下文与您拥有的View相关联,因此它具有一个上下文,该上下文将成为托管活动。

因此将上下文转换为活动:

var metrics = new DisplayMetrics();
(someView.Context as Activity)?.WindowManager.DefaultDisplay.GetMetrics(metrics);

系统服务示例:

var usbService = (someView.Context as Activity).GetSystemService(UsbService) as UsbManager;

另外,您正在编写此类代码的包含实例将是一个Activity,因此您可以使用 this 作为对象引用(this.WindowManager.~~~