mobile - 如何创建带有正方形的响应式网格?

标签 mobile grid xamarin xamarin.forms

我目前正在创建一个充满按钮的网格。现在我希望这个网格能够响应并且按钮是方形的。我想要创建的东西看起来像 iOS 或 Android 主屏幕(只是按钮)。

Grid grid = new Grid
        {

            HorizontalOptions = LayoutOptions.StartAndExpand,
            RowSpacing = 15,
            ColumnSpacing = 15,
            ColumnDefinitions = 
            {
                new ColumnDefinition { Width = new GridLength(1, GridUnitType.Star) },
                new ColumnDefinition { Width = new GridLength(1, GridUnitType.Star) },
                new ColumnDefinition { Width = new GridLength(1, GridUnitType.Star) }
            }
        };

        for (int i = 0; i < 12; i++)
        {
            MonitorButton button = new MonitorButton();
            grid.Children.Add(button, i % 3, i / 3);
        }

        this.Content = new ScrollView
        {
            Padding = new Thickness(15),
            Orientation = ScrollOrientation.Vertical,
            Content = grid
        };

所以我在这里创建了一个包含 3 列的网格,其中填充了 12 个 MonitorButton(背景上带有图像的按钮)。看起来不错.. 现在当我在横向模式下打开屏幕时,屏幕上充满了矩形,因为列数仍然相同...... 我该如何解决这个问题?我希望有某种动态的可能性(例如:itemscontrol @XAML)。

最佳答案

当您旋转屏幕时,当前页面会自行调整大小,因此它会调用页面中的 OnSizeRequest 方法。如果重写该方法,则可以同时检测大小和方向。

你的页面.cs || YourPage.xaml.cs

protected override SizeRequest OnSizeRequest(double widthConstraint, double heightConstraint)
{
    if(widthConstraint>heightConstraint)
    {
        //landscape mode
        //set your grid row & columndefinitions
    }
    else
    {
        //portait mode
        //set your grid row & columndefinitions
    }
    return base.OnSizeRequest(widthConstraint, heightConstraint);
}

关于mobile - 如何创建带有正方形的响应式网格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24431955/

相关文章:

javascript - ExtJS 5.0 : Grid remoteSort always sorts by the default 'sorters' only

javascript - 使用 navigator.camera 或纯 javascript 拍摄照片

html - 骨架网格用户代理样式表

java - 列表填充了最后的数据而不是尊重插入顺序(Android)

javascript - DHTMLX 网格中缺少行

xamarin - 为什么需要在 Xamarin.Forms 应用中更改程序集名称?

c# - 如何使用 C# Xamarin 设置 LinearLayout HORIZONTAL

xamarin - 为什么 Xamarin.Forms 应用无法在 Chromebook 上运行?

ios - Plist 和 Mobile Provisioning 文件加密

mobile - 仅在手机上换行