Вставка нескольких RadListViews не отображается на iOS - PullRequest
0 голосов
/ 05 апреля 2019

Мне нужно несколько RadListViews на одной странице, я использую NativeScript Angular

Я не знаю количество элементов в каждом списке, и элементы могут иметь очень разные размеры в зависимости от количества текста, содержащегося в элементе.

Так сказать, мне нужно три RadList друг на друга - первый может иметь 3 элемента, следующие 72 и последние 9 элементов. Я хочу, чтобы каждый список определял высоту, требуемую его содержимым, чтобы я мог показывать их друг над другом, независимо от того, как долго они находятся.

В Android это работает как шарм - каждый обзор списка занимает точно такую ​​же высоту, которая необходима для показа его элементов, и создает следующий просмотр списка сразу после

С другой стороны, в iOS все совсем по-другому - если я не установлю высоту самого RadListView, он просто не отобразится.

У меня есть два RadListViews, живущих внутри GridLayout, и присвоение строкам абсолютного значения, например row = "150, 150" или даже rows = "*, *", покажет столько списка, сколько позволяют предоставленные значения - но мне нужно, чтобы это было row = "auto, auto", так как я понятия не имею, насколько высоким будет каждый список, и я хочу показать все элементы.

Установка высоты непосредственно в RadListView также будет работать, но опять же - я не знаю высоту.

Установка высоты = "100%" непосредственно в RadListView не решает мою проблему, поскольку у меня не может быть абсолютной родительской высоты.

Так возможно ли это вообще, или мне нужно вычислить число для свойства высоты (что я действительно не хочу делать)

Опять же ... проблема существует только на устройствах iOS.

Я попытался передать dataItem как ObservableArray и как простой массив типа объектов: name [], потому что я думал, что асинхронность ObservableArray может сыграть свою роль, но это не имеет значения - я могу даже заполните текстовое свойство константой вроде вместо. Тем не менее, если высота не установлена ​​ни для строки, ни для самого RadListView - ничего не появится.

С уважением за

<GridLayout rows="auto, auto'>
    <RadListView [items]=" dataItems">
      <ng-template tkListItemTemplate let-item="item">
        <StackLayout orientation="vertical">
            <Label [text]="item.firstname"></Label>
            <Label [text]="item.lastname"></Label>
        </StackLayout>
      </ng-template>
    </RadListView>
    <RadListView [items]="dataItems">
      <ng-template tkListItemTemplate let-item="item">
            <StackLayout orientation="vertical">
                <Label [text]="item.firstname"></Label>
                <Label [text]="item.lastname"></Label>
            </StackLayout>
      </ng-template>
    </RadListView>
</GridLayout>

1 Ответ

0 голосов
/ 09 апреля 2019

Я создал для вас игровую площадку здесь .Когда вы используете GridLayout, вам необходимо присвоить row RadListView.

<GridLayout rows="auto, auto'>
    <RadListView row="0" [items]=" dataItems">
      <ng-template tkListItemTemplate let-item="item">
        <StackLayout orientation="vertical">
            <Label [text]="item.firstname"></Label>
            <Label [text]="item.lastname"></Label>
        </StackLayout>
      </ng-template>
    </RadListView>
    <RadListView row="1" [items]="dataItems">
      <ng-template tkListItemTemplate let-item="item">
            <StackLayout orientation="vertical">
                <Label [text]="item.firstname"></Label>
                <Label [text]="item.lastname"></Label>
            </StackLayout>
      </ng-template>
    </RadListView>
</GridLayout>
...