【问题标题】:Xamarin forms grid layout size is reducing continuouslyXamarin 表格网格布局尺寸不断减小
【发布时间】:2019-03-18 01:12:39
【问题描述】:

我们在 Xamarin 网格布局中遇到问题,大小在 OnAppearing 方法中定义。每次如果我们调用 OnAppearing 方法,网格的大小会不断减小,而不是得到确切的问题

这里是代码

  gridLayout.RowDefinitions.Add(new RowDefinition(){
            Height = new GridLength(5, GridUnitType.Star),
        });
        gridLayout.RowDefinitions.Add(new RowDefinition(){
            Height = new GridLength(5, GridUnitType.Star),
        });
        gridLayout.ColumnDefinitions.Add(new ColumnDefinition()
        {
            Width = new GridLength(2, GridUnitType.Star),
        });
        gridLayout.ColumnDefinitions.Add(new ColumnDefinition(){
            Width = new GridLength(2, GridUnitType.Star),
        });
        gridLayout.ColumnDefinitions.Add(new ColumnDefinition(){
            Width = new GridLength(2, GridUnitType.Star),
        });
        gridLayout.ColumnDefinitions.Add(new ColumnDefinition(){
            Width = new GridLength(2, GridUnitType.Star),
        });
        gridLayout.ColumnDefinitions.Add(new ColumnDefinition(){
            Width = new GridLength(2, GridUnitType.Star),
        });


        var productIndex = 0;
        for (int rowIndex = 0; rowIndex < 2; rowIndex++)
        {
            for (int columnIndex = 0; columnIndex < 5; columnIndex++)
            {
                if (productIndex >= CategoryArray.Count)
                {
                    break;
                }
                var category = CategoryArray[productIndex];
                productIndex += 1;
                var categoriesView = new CategoriesView
                {
                    BackgroundColor = Color.White
                };

                if(category.Image == null){
                    categoriesView.CategoriesImage.Source = "category_logo";
                }else{
                    categoriesView.CategoriesImage.Source = category.Image;
                }

                //categoriesView.BackgroundColor = Color.Olive;
                categoriesView.TextLabel.Text = category.Name;
                categoriesView.CategoryId = category.Id.ToString();
                gridLayout.Children.Add(categoriesView, columnIndex, rowIndex);

                //gridLayout.BackgroundColor = Color.Beige;
            }
        }

当 OnAppearing 调用页面时,页面正在重新加载(这是功能)并且网格大小不断减小。

【问题讨论】:

  • gridLayout Grid是在OnAppearing、构造函数、Xaml中创建的,还是在哪里创建的?

标签: layout xamarin.forms xamarin.ios xamarin.android grid


【解决方案1】:

您应该只声​​明一次网格结构,最好在构造函数中(或在构造函数中调用的 XAML 中)。每当调用 OnAppearing 时,您都会向现有 Grid 添加 2 个新行和 5 个新列,因此它的大小正在减小。

此外,通过查看添加您编写的逻辑的元素,您可能应该将 ListView 与 Grid ViewCell 一起使用,并将 ItemsSource 设置为 ObservableCollection,以便它会自动更新

【讨论】:

    猜你喜欢
    • 2018-01-25
    • 1970-01-01
    • 1970-01-01
    • 2016-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多