【问题标题】:Xamarin forms ListView inside ScrollView issueXamarin 在 ScrollView 问题中形成 ListView
【发布时间】:2016-09-22 17:12:54
【问题描述】:

在我的 Xamarin 表单应用程序中,一个 ScrollView 中有多个 ListView 控件。但在 android 中,滚动不适用于 ListView。有没有替代方案?

【问题讨论】:

标签: xamarin xamarin.android xamarin.forms


【解决方案1】:

您不应该将 ListViews 包含到 ScrollView 中,因为它系统会混淆这两者的滚动行为。 考虑到这一点,您需要重新设计您的页面。

示例: 1) 在 StackLayout 中使用 ListViews 2)在ScrollView中使用TableViews

【讨论】:

  • ListView 和 TableView 都有内置的滚动功能。当嵌套在 ScrollView 中时,它们不是同样容易受到问题的影响吗?
【解决方案2】:

您可以简单地将本机端的“NestedScrollingEnabled”属性设置为 true。 对于 xamarin 表单,您可以创建自定义渲染器并将“NestedScrollingEnabled”属性设置为 true

    protected override void OnElementChanged(ElementChangedEventArgs<Xamarin.Forms.ListView> e)
    {
        base.OnElementChanged(e);

        if (e.NewElement != null)
        {
            var listView = this.Control as Android.Widget.ListView;
            listView.NestedScrollingEnabled = true;               
        }            
    }

【讨论】:

    【解决方案3】:

    ListView 实现自己的滚动,可能与 ScrollView 冲突。

    如果您需要能够在同一个 ScrollView 中滚动两个列表,您可以例如创建自定义视图(而不是使用单元格),将它们放置在 ScrollView 内的 StackLayout 中

    More about ListView performance,他们甚至解释了为什么不应该将 ListView 放在 ScrollView 中

    【讨论】:

      【解决方案4】:

      您是否考虑过将一个列表视图与组一起使用而不是多个列表视图?

      【讨论】:

        【解决方案5】:

        我使用它将固定到该高度的任何网格行,并且列表视图不会滚动

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-12-07
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-12-16
          • 2016-09-03
          相关资源
          最近更新 更多