Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Listview 表单滚动屏幕,其中包含一个列表视图_Listview_Xamarin_Xamarin.forms - Fatal编程技术网

Listview 表单滚动屏幕,其中包含一个列表视图

Listview 表单滚动屏幕,其中包含一个列表视图,listview,xamarin,xamarin.forms,Listview,Xamarin,Xamarin.forms,我是Xamarin.Forms的新手,我开始实现一个包含标题、搜索栏、一些过滤控件和主列表视图的产品屏幕 一切正常,ListView显示项目并按预期滚动 我的目标是让整个屏幕滚动,而不仅仅是ListView项,原因是顶部元素占据了相当大的空间 如何在XAML中实现这一点?我尝试添加一个ScrollView来包含所有内容,但是在ScrollView中添加ListView当然会有问题 谢谢。您可以使用StackLayout <ScrollView> <St

我是Xamarin.Forms的新手,我开始实现一个包含标题、搜索栏、一些过滤控件和主列表视图的产品屏幕

一切正常,ListView显示项目并按预期滚动

我的目标是让整个屏幕滚动,而不仅仅是ListView项,原因是顶部元素占据了相当大的空间

如何在XAML中实现这一点?我尝试添加一个ScrollView来包含所有内容,但是在ScrollView中添加ListView当然会有问题


谢谢。

您可以使用StackLayout

 <ScrollView>
            <StackLayout>
                <ListView>
                </ListView>
            </StackLayout>
 </ScrollView>

您可以设置listview的
TranslationY
,然后它会滚动,因此它会向上移动listview.Header部分。 Michael Ridland有一篇很好的博客文章,看看:

将ListView放置在ScrollView中不是一个好主意,但我们仍试图通过编写自定义渲染器来实现它,因为这些功能在本机平台中可用

创建嵌套列表视图类:

public class NestedListView: Xamarin.Forms.ListView  
{  
   
}  
在Androi项目中创建NestedListViewDroid:

public class NestedListViewDroid: ListViewRenderer  
{  
    public NestedListViewDroid(Android.Content.Context context) : base(context)  
    {  

    }  
    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;  
        }  
    }  
} 
公共类嵌套ListViewDroid:ListViewRenderer
{  
公共嵌套ListViewDroid(Android.Content.Context):基(Context)
{  
}  
受保护的覆盖无效OnElementChanged(ElementChangedEventArgs e)
{  
基础。一个要素发生变化(e);
if(例如NewElement!=null)
{  
var listview=this.Control as Android.Widget.listview;
listview.NestedScrollingEnabled=true;
}  
}  
} 
然后使用类似于:

<ScrollView Padding="20">  
    <StackLayout>  
        ...

        <controls:NestedListView  x:Name="listview">  
        </controls:NestedListView >  

    ... 
    </StackLayout>  
</ScrollView>   

...
... 

可绑定布局可能很有用

   <ScrollView>
            <StackLayout BindableLayout.ItemsSource="">
                <BindableLayout.ItemTemplate>
                    <!-- Your ListView DataTemplate -->
                </BindableLayout.ItemTemplate>
            </StackLayout>
   </ScrollView>


将一个可滚动控件嵌套在另一个控件中通常不是一个好主意。这使得用户很难导航页面。更好的方法是使顶部元素更小或可隐藏,或者可能将它们放在列表视图的标题中谢谢。我认为在标题中添加控件是我一直在寻找的。