Xamarin.forms Xamarin在ScrollView中形成ListView-Android在ListView中禁用滚动
在Android中通过Xamarin表单在Scrollview中使用ListView时,我遇到了一个问题 我正在根据项目源和行高计算listview的高度,但我仍然可以在listview中滚动: listview是scrollview中包含的白色区域,下面几乎没有标签,因此我们可以滚动: 但在Android中,我们也可以在listview内部滚动: 我尝试在自定义渲染器中捕捉移动事件:Xamarin.forms Xamarin在ScrollView中形成ListView-Android在ListView中禁用滚动,xamarin.forms,xamarin.android,Xamarin.forms,Xamarin.android,在Android中通过Xamarin表单在Scrollview中使用ListView时,我遇到了一个问题 我正在根据项目源和行高计算listview的高度,但我仍然可以在listview中滚动: listview是scrollview中包含的白色区域,下面几乎没有标签,因此我们可以滚动: 但在Android中,我们也可以在listview内部滚动: 我尝试在自定义渲染器中捕捉移动事件: public class CustomListViewRenderer : ListViewRenderer
public class CustomListViewRenderer : ListViewRenderer
{
public CustomListViewRenderer(Context context) : base(context)
{
}
protected override void OnElementChanged(ElementChangedEventArgs<Xamarin.Forms.ListView> e)
{
base.OnElementChanged(e);
var customListView = Element as CustomListView;
if (customListView == null)
{
return;
}
if (customListView.IsScrollingEnable == false)
{
Control.Touch += ListView_Touch;
}
}
private void ListView_Touch(object sender, TouchEventArgs e)
{
if (e.Event.Action == MotionEventActions.Move)
{
e.Handled = true;
}
else
{
e.Handled = false;
}
}
}
这可以解决空间问题,但如果用户使用触摸屏从listview区域滚动,则全局滚动视图无法工作,您只能使用触摸屏从浅蓝色区域滚动
有没有办法在不影响父scrollview的情况下禁用listview中的滚动?复制问题的示例项目链接:正如Jason所说,您可以直接使用Listview 使用代码,可以在自定义渲染器中将setScrollContainer设置为false
protected override void OnElementChanged(ElementChangedEventArgs<Xamarin.Forms.ListView> e)
{
base.OnElementChanged(e);
if (e.NewElement == null)
return;
if (Control != null)
{
Control.SetScrollContainer(false);
}
}
您不应该嵌套可滚动视图,LIstView本身就是可滚动的