Размещение RadListView внутри Grid Решает проблему прокрутки iOS, но не работает на Android - PullRequest
0 голосов
/ 12 июня 2018

Я использую формы 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...