Xamarin.forms Xamarin在ScrollView中形成ListView-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

在Android中通过Xamarin表单在Scrollview中使用ListView时,我遇到了一个问题

我正在根据项目源和行高计算listview的高度,但我仍然可以在listview中滚动:

listview是scrollview中包含的白色区域,下面几乎没有标签,因此我们可以滚动:

但在Android中,我们也可以在listview内部滚动:

我尝试在自定义渲染器中捕捉移动事件:

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本身就是可滚动的