Я столкнулся с проблемой при использовании ListView внутри Scrollview в Android (через Xamarin Forms).
Я вычисляю высоту списка на основе источника элемента и высоты строки, но я все еще могу прокрутка внутри списка:
Список - это белая область, содержащаяся в scrollview, с несколькими ярлыками ниже, поэтому мы можем прокручивать:
Но в Android мы также можем прокручивать внутри самого списка:
Я пытался поймать событие перемещения в пользовательском рендерере:
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;
}
}
}
Это может решить проблему с пространством, но если пользователь прокручивает область просмотра с помощью касания, глобальный просмотр прокрутки не работает (вы можно прокручивать только касанием из области Aqua Blue).
Есть ли способ отключить прокрутку в списке, не затрагивая родительский режим прокрутки? Ссылка на образец проекта для воспроизведения проблемы: https://1drv.ms/u/s! An8JKHwJo47up2ss_6pdzlXOhtDz? E = GdXrbf