Listview 表单滚动屏幕,其中包含一个列表视图
我是Xamarin.Forms的新手,我开始实现一个包含标题、搜索栏、一些过滤控件和主列表视图的产品屏幕 一切正常,ListView显示项目并按预期滚动 我的目标是让整个屏幕滚动,而不仅仅是ListView项,原因是顶部元素占据了相当大的空间 如何在XAML中实现这一点?我尝试添加一个ScrollView来包含所有内容,但是在ScrollView中添加ListView当然会有问题Listview 表单滚动屏幕,其中包含一个列表视图,listview,xamarin,xamarin.forms,Listview,Xamarin,Xamarin.forms,我是Xamarin.Forms的新手,我开始实现一个包含标题、搜索栏、一些过滤控件和主列表视图的产品屏幕 一切正常,ListView显示项目并按预期滚动 我的目标是让整个屏幕滚动,而不仅仅是ListView项,原因是顶部元素占据了相当大的空间 如何在XAML中实现这一点?我尝试添加一个ScrollView来包含所有内容,但是在ScrollView中添加ListView当然会有问题 谢谢。您可以使用StackLayout <ScrollView> <St
谢谢。您可以使用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>
将一个可滚动控件嵌套在另一个控件中通常不是一个好主意。这使得用户很难导航页面。更好的方法是使顶部元素更小或可隐藏,或者可能将它们放在列表视图的标题中谢谢。我认为在标题中添加控件是我一直在寻找的。