Я использую формы Xamarin (2.5.1) с Telerik Data Controls (2018.1.405.2) для разработки приложения для iOS и Android.Я нацеливаюсь на iOS 11.4 и Android 7.0.
У меня есть RadListView для отображения списка элементов, который использует общий рабочий процесс «раскрывающийся список для обновления, прокрутка вниз для автоматического запроса дополнительных записей».Эта функциональность работает.На Android я могу прокрутить до конца и увидеть последнюю запись в списке без каких-либо проблем.
В iOS последние четыре элемента в списке всегда обрезаются.Вытягивание вручную против автоматической защелкивания позволяет достигать максимума при обрезании предметов, но, очевидно, это нежелательная функциональность.На форуме Telerik я нашел тему, которая решает эту проблему здесь:
https://www.telerik.com/forums/last-cell-of-listview-cutoff
Размещение RadListView внутри элемента Grid, как упомянуто в последнем сообщении в этой теме, действительно исправляетпроблема на iOS.Затем я могу прокрутить до конца списка и увидеть последние элементы, не прибегая к автоматическому возврату.
<Grid Padding="0, 0, 0, 0">
<td:RadListView x:Name="MyListView" ... >
Однако на Android это, похоже, ломает вещи.На Android RadListView просто исчезает, когда я это делаю.Ни один из его элементов не прорисовывается.
Я пробовал разные вещи, такие как указание одного столбца и строки, как с автоматическим размером, так и с заданными размерами значений от 1 до 1000, (и размещение RadListView в строке 0 иСтолбец 0), но это ничего не меняет.
В настоящее время я думаю, что мне нужно будет обнаружить, что платформа - iOS, и добавить исправление в .xaml.cs для переопределения RadListView.под новым элементом сетки, который я создаю программно.Я еще не понял, что это работает правильно, но я думаю, что это должно быть возможно с помощью чего-то вроде следующего, вызываемого из конструктора представления:
private void AddGridParent()
{
var grid = new Grid();
grid.RowDefinitions.Add(new RowDefinition { Height = GridLength.Auto });
grid.ColumnDefinitions.Add(new ColumnDefinition { Width = GridLength.Auto });
grid.Padding = new Thickness(0.0);
grid.Parent = MyListView.Parent;
grid.Children.Add(MyListView, 0, 0);
}
.. Но, похоже, это не должнобыть необходимымЯ не пытаюсь сделать что-нибудь необычное.Я провел обширный поиск и не могу найти каких-либо известных проблем с размещением RadListView внутри Grid на Android.
Мой вопрос заключается в том, что заставляет RadListView не отображаться на Android при помещении внутрьGrid и есть ли стандартное, принятое исправление для этой проблемы?
Редактировать: Я также отмечу, что мне не нравится природа черного ящика родительского решения Grid для начала, и я пытаюсь выяснить,почему это работает на iOS.