gpt4 book ai didi

c# - Windows Phone 导航按钮与屏幕分辨率重叠

转载 作者:可可西里 更新时间:2023-11-01 07:57:08 24 4
gpt4 key购买 nike

Nokia 820 vs Nokia 635下面您将看到在 Windows Phone 8.1 one 2 设备中运行的屏幕。两者都声称具有 800x480 的视口(viewport)宽度和高度,但是正如您从图像中看到的那样,635 的导航按钮与游戏区域重叠。

我检查了 GraphicsDevice.Adapter 和 GraphicsDevice.Viewport 中的各种属性,但它们都是一样的!

屏幕在 C# UWP Monogame 代码中运行。我将 PrefferedBackBufferWidth 和 Height 设置为 480x800。

如何判断导航按钮是否占据了屏幕的一部分?

最佳答案

我会进一步扩展答案。

在 Windows Phone 8.1 中,您有两个 ApplicationViewBoundsMode 枚举值。

  • UseVisible,应用程序内部的页面将仅使用不包括 StatusBar、应用程序栏和软导航按钮的可见区域。

    enter image description here

要让您的应用使用 ApplicationViewBoundsMode.UseVisible 选项,请在 app.xaml.cs 中的 `Windows.Current.Activate(); 之前添加以下内容;

#if WINDOWS_PHONE_APP
ApplicationView.GetForCurrentView().SetDesiredBoundsMode(ApplicationViewBoundsMode.UseVisible);
#endif
  • UseCoreWindow,在核心窗口占据的区域内布置窗口的内容(即,包括任何遮挡区域 - 包括软导航按钮)。 enter image description here

要让您的应用使用 ApplicationViewBoundsMode.UseCoreWindow 选项,请在 app.xaml.cs 中的 Windows.Current.Activate(); 之前添加以下内容

#if WINDOWS_PHONE_APP
ApplicationView.GetForCurrentView().SetDesiredBoundsMode(ApplicationViewBoundsMode.UseCoreWindow);
#endif

在某些情况下,开发人员可能希望使用 UserCoreWindow 选项在应用栏下显示内容,但作为副作用,导航软按钮会遮挡部分页面以解决此问题,请遵循下一个解决方案。

您可以在 WindowsPhone 中监听 ApplicationView.GetForCurrentView().VisibleBoundsChanged 并更新页面边距。

这是一个 article由 Joost van 撰写,用于解决此问题(以及您可以开箱即用的行为)

引用上面链接的问题解释

If the application view bound mode is set to ApplicationViewBoundsMode.UseCoreWindow in App.Xaml.cs the phone reports the whole screen size – not only the part that is normally taken by the status bar on top and the application bar at the bottom, but also the part that is used by the button bar.

以及他更新页边距的解决方案中的一个片段

void KeepInViewBehaviorVisibleBoundsChanged(ApplicationView sender, object args)
{
UpdateBottomMargin();
}

private void UpdateBottomMargin()
{
if (WindowHeight > 0.01)
{
var currentMargins = AssociatedObject.Margin;

var newMargin = new Thickness(
currentMargins.Left, currentMargins.Top, currentMargins.Right,
originalBottomMargin +
(WindowHeight - ApplicationView.GetForCurrentView().VisibleBounds.Bottom));
AssociatedObject.Margin = newMargin;
}
}

关于c# - Windows Phone 导航按钮与屏幕分辨率重叠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33069252/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com