0

我需要在同一页面上有多个 RadListViews,我正在使用 NativeScript Angular

我不知道每个列表中的项目数量,根据项目包含的文本数量,项目的大小可能会有很大差异。

可以这么说,我需要三个相互叠加的 RadList - 第一个可能有 3 个项目,接下来的 72 个和最后 9 个项目。我希望每个列表都能达到其内容要求的高度,这样我就可以将它们放在一起显示,无论它们有多长。

在 Android 上,它的工作原理就像一个魅力 - 每个 radlistview 都占据了显示其项目所需的高度,并在之后立即生成下一个 radlistview

另一方面,在 iOS 上,它非常不同 - 如果我不设置 RadListView 本身的高度,它根本不会显示。

我有两个 RadListViews 生活在一个 GridLayout 中,并且给行一个绝对值,如 row="150, 150" 甚至 rows="*,*" 将显示尽可能多的列表,只要提供的值允许 - 但我需要它是 rows="auto, auto" 因为我不知道每个列表会有多高,我想显示所有项目。

直接在 RadListView 上设置高度也可以,但同样 - 我不知道高度。

直接在 RadListView 上设置 height="100%" 并不能解决我的问题,因为我不能有绝对的父高度。

那么这有可能吗,还是我必须为 height 属性计算一个数字(我真的不想这样做)

再次...问题仅存在于 iOS 设备上。

我尝试将 dataItem 作为 ObservableArray 和对象类型的普通数组提供:name[],因为我认为 ObservableArray 的异步性可能会起作用,但这没关系 - 我什至可以填充文本具有常量 like 而不是 的属性。尽管如此,如果没有在行或 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>
4

1 回答 1

0

我在这里为你创建了一个游乐场。当您使用 时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>
于 2019-04-08T22:42:53.973 回答