layout - Xamarin.Forms 中 Master-Detail 页面的母版页有多宽?

标签 layout size xamarin.forms

根据屏幕尺寸(和设备习惯用法?),母版页的宽度会有所不同:在手机上,它大约是屏幕宽度的 80%,而在平板电脑上,它似乎是一个恒定的尺寸,如 320 dp。

有人知道这个值的一般公式吗?当 Width 出现时,我想用它在构建期间布置一些元素。属性尚未设置。

编辑:
我知道 how to get the current screen size .但是 Xamarin.Form 的主从页面所呈现的主页面的宽度与它有什么关系?它不会覆盖整个屏幕,但会根据设备填充不同的部分。

最佳答案

您可以请求设备的实际屏幕宽度、高度和比例因子。

(来自 https://github.com/mattregul/Xamarin_GetDeviceScreensize)

iOS AppDelegate.cs

[Register("AppDelegate")]
    public partial class AppDelegate : global::Xamarin.Forms.Platform.iOS.FormsApplicationDelegate
    {
        public override bool FinishedLaunching(UIApplication app, NSDictionary options)
        {
            global::Xamarin.Forms.Forms.Init();

            // Store off the device sizes, so we can access them within Xamarin Forms
            App.DisplayScreenWidth  = (double)UIScreen.MainScreen.Bounds.Width;
            App.DisplayScreenHeight = (double)UIScreen.MainScreen.Bounds.Height;
            App.DisplayScaleFactor  = (double)UIScreen.MainScreen.Scale;

            LoadApplication(new App());

            return base.FinishedLaunching(app, options);
        }
    }

Android MainActivity.cs
[Activity(Label = "Xamarin_GetDeviceScreensize.Droid", Icon = "@drawable/icon", Theme = "@style/MyTheme", MainLauncher = true, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation)]
    public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity
    {
        protected override void OnCreate(Bundle bundle)
        {
            TabLayoutResource = Resource.Layout.Tabbar;
            ToolbarResource = Resource.Layout.Toolbar;

            base.OnCreate(bundle);

            // Store off the device sizes, so we can access them within Xamarin Forms
            App.DisplayScreenWidth  = (double)Resources.DisplayMetrics.WidthPixels  / (double)Resources.DisplayMetrics.Density; // Width = WidthPixels / Density
            App.DisplayScreenHeight = (double)Resources.DisplayMetrics.HeightPixels / (double)Resources.DisplayMetrics.Density; // Height = HeightPixels / Density
            App.DisplayScaleFactor  = (double)Resources.DisplayMetrics.Density;

            global::Xamarin.Forms.Forms.Init(this, bundle);

            LoadApplication(new App());
        }
    }

Xamarin Forms App.cs
public class App : Application
    {
        public static double DisplayScreenWidth;
        public static double DisplayScreenHeight;
        public static double DisplayScaleFactor;

        public App()
        {

            string ScreenDetails =  Device.OS.ToString() + " Device Screen Size:\n" +
                                    $"Width: {DisplayScreenWidth}\n" +
                                    $"Height: {DisplayScreenHeight}\n" +
                                    $"Scale Factor: {DisplayScaleFactor}";

            // The root page of your application
            var content = new ContentPage
            {
                Title = "Xamarin_GetDeviceScreensize",
                Content = new StackLayout
                {
                    VerticalOptions = LayoutOptions.Center,
                    Children = {
                        new Label {
                            HorizontalTextAlignment = TextAlignment.Center,
                            FontSize = Device.GetNamedSize (NamedSize.Large, typeof(Label)),
                            Text = ScreenDetails
                        }
                    }
                }
            };

            MainPage = new NavigationPage(content);
        }

    }

关于layout - Xamarin.Forms 中 Master-Detail 页面的母版页有多宽?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40217003/

相关文章:

ruby-on-rails - Rails 渲染如何在 Controller 中工作?为什么它不使用布局?

android - 如何更改动态 View 的各个属性的值?

Android屏幕尺寸全屏

c# - 在 Xamarin.Forms 上获取真实的 iPhone 设备 IMEI

c# - Xamarin 形式 : How to access "tabBarController: shouldSelectViewController:"

css - 正文背景延伸到边距或在滚动时被截断

android - 布局之间的 3D 动画,如果冻 bean 中的锁屏

upload - 谷歌云存储 - 如何限制用户上传的大小?

android - App体积增加3倍,如何缩小

ios - 该应用程序已被终止。错误 "Could not find an application at the specified directory"