【问题标题】:Xamarin.Forms Scrolling Grid With Relative SizesXamarin.Forms 具有相对大小的滚动网格
【发布时间】:2018-03-21 23:07:51
【问题描述】:

我设法在使用 8 行行高 250(绝对)的 ScrollView 内创建了一个 GridView。这很好,直到我意识到它不适用于不同分辨率的屏幕。如何创建一个有 8 行的网格视图,但每行占据屏幕的一半,所以您必须向下滚动才能看到其余部分?使用 8 行高度“*”只需将 8 行放到视图上,无需滚动。我正在使用 xaml,但如有必要,可以使用 c#。

【问题讨论】:

  • 如果您提供您的 xaml 代码会很有帮助

标签: xamarin gridview layout xamarin.forms infinite-scroll


【解决方案1】:

您可以访问设备的屏幕高度,因此计算 0.5 * 高度并将其设置为行高:

在 app.xaml.cs 中创建静态变量

static public int ScreenHeight;

然后你需要为 iOS 和 Android 设置变量的值。

Android:MainActivity.cs

protected override void OnCreate(Bundle bundle)
{
    base.OnCreate (bundle);
    global::Xamarin.Forms.Forms.Init(this, bundle);
    App MyApp = new App();
    App.ScreenHeight = (int)(Resources.DisplayMetrics.HeightPixels / Resources.DisplayMetrics.Density);
}

iOS:AppDelegate.cs

public override bool FinishedLaunching(UIApplication app, NSDictionary options)
{
    App.ScreenHeight = (int)UIScreen.MainScreen.Bounds.Height;
    global::Xamarin.Forms.Forms.Init();
    LoadApplication(new App());
    return base.FinishedLaunching(app, options);
}

现在,在视图的 ViewModel 中有一个属性,它可以访问 ScreenHeight 并根据您的需要计算它

public int HalfScreenHeight
{
    get { return App.ScreenHeight / 2; }
}

最后,您可以将行高设为HalfScreenHeight

重要提示:如果您在页面上允许设备旋转纵向和横向模式,您可能需要根据需要更新绑定。你可以用同样的方法访问屏幕的宽度。

【讨论】:

    猜你喜欢
    • 2016-09-30
    • 1970-01-01
    • 1970-01-01
    • 2012-11-06
    • 1970-01-01
    • 2017-01-29
    • 1970-01-01
    • 1970-01-01
    • 2020-05-14
    相关资源
    最近更新 更多