Xamarin.forms中的响应网格

时间:2016-02-09 06:36:29

标签: c# android ios windows-phone xamarin.forms

参考my previous question,我需要一些帮助,使listview项目能够响应所有平台,所有尺寸以及横向和纵向模式。我现在的清单视图在10"屏幕。我想让它响应。有没有提到这个呢?

2 个答案:

答案 0 :(得分:0)

如果您的ListView很小并且没有覆盖整个页面,那么您可能会遇到某种固定宽度问题?

mainList上设置ContentPage而没有任何布局选项。

首先尝试设置外部元素的HorizontalOptionsVerticalOptions,一旦完成,请关注内部控件以确保它们之后占用所需的空间量。

        o.HorizontalOptions = LayoutOptions.FillAndExpand;
        o.VerticalOptions = LayoutOptions.FillAndExpand;

ListView BackgroundColor更改为一些明显的颜色,以帮助您确保正确布局。

答案 1 :(得分:0)

每个Xamarin.Forms.Element(以及每个页面)都实现了Width和Height属性,您可以根据页面大小使用这些属性来调整布局。 您应该在此页面上获取有关VisualElement类https://developer.xamarin.com/api/type/Xamarin.Forms.VisualElement/

的战利品

您还可以使用Device.Idiom来检查您是在手机还是平板电脑上并单独处理每个案例:

        if (Device.Idiom == TargetIdiom.Phone)
            //your code goes here
        else
            if (Device.Idiom == TargetIdiom.Tablet)
            //your code goes here
        else
            throw new PlatformNotSupportedException();

对于landscape / protrait,只需检查页面的宽度/高度属性:

        if (Width > Height)
        {
            //"landscape"
        }
        else
        {
            //"portrait"
        }

为了处理Orientation更改,请实现SizeChanged的事件处理程序,或者只是覆盖OnSizeAllocated(https://developer.xamarin.com/api/member/Xamarin.Forms.VisualElement.OnSizeAllocated/p/System.Double/System.Double/