【问题标题】:Issue with Grid height, inside a ScrollViewGrid 高度问题,在 ScrollView 内
【发布时间】:2021-06-02 10:01:27
【问题描述】:

我有一个 Grid,在 ScrollView 中

行高是自动的,因为根据里面的文本,行可以有更大的高度。

用户可以添加任意数量的行,但我想在网格上保留一些文本,所以我将网格放在滚动视图中,这样,网格在屏幕上只采用相同的大小,并且用户可以滚动浏览行。

我的问题是,由于我的网格没有固定高度(例如,如果只有 2 行,我不希望它固定在 10 000),它只是采用 scollview 高度,而我的如果没有足够的空间,行将被截断,而不是采用它们需要的大小,从而扩大滚动视图。

编辑:第一张图,网格高度固定为 2000,滚动视图工作良好但行下方有空白空间(黄色背景是滚动视图背景颜色)

第二张图,我删除了网格高度,现在,网格只占用滚动视图高度(500),如果我的行需要更多空间,它们会被截断

另外,我的滚动视图甚至不能滚动了

你们有什么想法吗?谢谢:)

编辑:

这里的结构,自动行高的网格变成高度固定的滚动视图

 <ScrollView HeightRequest="500" BackgroundColor="Yellow">
    <Grid x:Name="gridLignes" BackgroundColor="#E8E8E8">
                        <Grid.RowDefinitions>
                           <RowDefinition Height="Auto"/>
                        </Grid.RowDefinitions>
                     
   </Grid>
</ScrollView>

作为一种解决方法,我将网格高度固定为 2000,但我的滚动视图内有无用的空白空间:/

我认为我的问题来自我使用网格的方式。我试图将我的网格放在滚动视图之外,让默认的网格高度和我的行具有自动高度,但它仍然无法正常工作。

但是,如果行处于自动高度,则网格应占用其子项所需的空间。

我使用网格的方式是:

-创建默认模板行。在每一列内,都有控件(条目、选择器等)。然后,我在我的网格中添加了这个模板 4 次。

-当值更改时,根据所选项目,一些文本会显示在另一列中(这就是我需要自动高度的原因)。 要添加此文本,我直接访问网格子 (grid.Children[i]) 并且更改是值,因此,在添加文本之前,该行就在这里。

也许我需要删除该行,使用正确的值重新创建它,然后在我的网格中再次添加它。

我稍后会尝试这个,并会更新这个案例。也许有人会遇到和我一样的问题

【问题讨论】:

  • 根据您的描述,我不清楚您的问题是什么,请在此处发布更详细的问题或截图。
  • 感谢您的宝贵时间!我用 2 个屏幕截图编辑了我的帖子
  • 您添加了 ListView 或其他在网格中显示数据列表的控件?也许你可以发布更多关于你的问题的代码,或者在 github 上提供一个简单的示例,我会下载你的示例进行测试。
  • 我在多选模式下对一列使用syncfusion sfautocomplete。如果我仍然无法使其工作,我将尝试不使用并处理样本!再次感谢:)
  • 好的,所以我创建了一个 git 项目(以前从未使用过 git,所以也许我做错了)github.com/MVasseur-Nexti/GitScrollInGrid 如您所见,网格位于滚动视图中(我的测试项目名称错误)。但是,如果您在编辑器中输入非常长的文本(占位符显示“EnterTexthere”),文本将被截断,而不是在滚动视图中占用更多空间。如果您需要更多信息,请告诉我,我实际上已经放弃了这一点:/

标签: c# xamarin grid scrollview


【解决方案1】:

所以,我想办法让它工作!

在我的编辑器上进行更改后,我检查每一行中每个编辑器的高度,并用这个值定义我的网格高度(当然还要添加行间距)。

所以,我的网格是一个固定高度(重新计算),所以我的滚动视图是可滚动的,没有任何东西被截断!

如果它可以帮助别人:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多