【问题标题】:Xamarin Forms - XAML layout out of the screenXamarin Forms - 屏幕外的 XAML 布局
【发布时间】:2016-12-24 16:25:47
【问题描述】:

我正在尝试做以下事情:

红色区域是AbsoluteLayout,我想将其移出屏幕,如图所示。我目前使用{Layout}.TranslateTo();,但它使用绝对位置,所以我不知道它是否适用于图片中的每个设备..

很难解释,但想象一下,我将这个布局移动到 300px (x),然后在手机上它可以工作,因为屏幕不是那么大,但在平板电脑上,它可能无法工作,因为屏幕更大。

此外,如果进行了旋转(水平模式),那么屏幕将比其他所有可能性等更大。

那么,它是否存在某些东西,例如 AbsoluteLayout 的比例值,例如 2.0 或 -1.0 以将布局置于屏幕之外,但适用于每种设备?

如果您完全理解我的意思,请不要犹豫,向我询问有关某些方面的更多信息:)

提前致谢!

【问题讨论】:

    标签: xaml layout xamarin.forms


    【解决方案1】:

    AbsoluteLayout 接受 0 到 1 之间的比例大小。因此您可以像这样分配:

    AbsoluteLayout.LayoutBounds="0,0,1,1"
    AbsoluteLayout.LayoutFlags="SizeProportional" 
    

    表示从 (0,0) 点开始并填满整个屏幕。

    你的翻译电话应该是这样的:

    Xaml

      <AbsoluteLayout x:Name="yourRedOne" AbsoluteLayout.LayoutBounds="0,0,1,1" AbsoluteLayout.LayoutFlags="SizeProportional">
        <!--Your red container content goes here-->
    
      </AbsoluteLayout>
    
    </AbsolutLayout>
    

    Xaml.cs

    yourRedOne.TranslateTo(Width, 0);
    

    对于您的方向更改,您还应该在游览View 中覆盖OnSizeAllocated 方法并再次调用TranslateTo 方法。

    【讨论】:

    • 感谢您的回答:)
    【解决方案2】:

    假设您在一个表单项目中,我会在启动应用程序时读取屏幕高度和宽度并将其存储在全局变量中。像这样的。

    Android onCreate 的 MainActivity

           //Get Screen Size of Phone for Android
            var metrics = Resources.DisplayMetrics;
            var widthInDp = ConvertPixelsToDp(metrics.WidthPixels);
            var heightInDp = ConvertPixelsToDp(metrics.HeightPixels);
            Global.CurrentScreen.screenWidth = widthInDp;
            Global.CurrentScreen.screenHeight = heightInDp;
    
        private int ConvertPixelsToDp(float pixelValue)
        {
            var dp = (int)((pixelValue) / Resources.DisplayMetrics.Density);
            return dp;
        }
    

    对于 AppDelegate 中的 iOS 已完成启动

    Global.CurrentScreen.screenHeight = (int)UIScreen.MainScreen.Bounds.Height;
    Global.CurrentScreen.screenWidth = (int)UIScreen.MainScreen.Bounds.Width;
    

    然后根据保存的大小进行翻译。

    【讨论】:

      猜你喜欢
      • 2020-12-06
      • 2021-02-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多