Xamarin.Forms使用相对大小滚动网格

时间:2018-03-21 23:07:52

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

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

1 个答案:

答案 0 :(得分: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

重要事项:如果您在页面上允许设备旋转纵向和LandScape模式,则可能需要根据需要更新绑定。您可以以相同的方式访问屏幕的宽度。