添加额外的行以防止文本溢出

时间:2019-03-26 17:39:00

标签: angular nativescript

如何在列表中的文本下方添加一行?我使用的是nativescript,但如果有一种方法可以按角度进行,那也可以。

在我的Nativescript(角度)应用程序中,我有一个使用RadListView的列表。当我单击每个列表项中的文本时,文本将展开。有时,较大的文本会转到下一行。这是一个问题,因为RadListView不允许调整文本周围的容器的大小(在iOS上)。

因此,当文本移至下一行时,它将被隐藏。

如果每个列表项中的文本下方都有多余的一行,我可以解决此问题。这样,如果文本溢出,它将直接进入下一行。

但是我该怎么做?

文本长度会有所不同,因此必须以某种方式动态完成。

示例:

<RadListView [items]="textArray" iosOverflowSafeArea="false">
    <ng-template tkListItemTemplate let-item="item">
       <StackLayout iosOverflowSafeArea="false">
            <StackLayout style="border-width: 2; border-color: black">
                <Label [text]="item.text" textWrap="true" (tap)="makeTextBigger()"></Label>
            </StackLayout>
        </StackLayout>
    </ng-template>
</RadListView>

//currently, text will be hidden if it gets bigger and overflows to the next line

2 个答案:

答案 0 :(得分:0)

这是iOS的局限性,除非提出要求,否则它不会中继单元。 Here是一种解决方法。

var indexPaths = NSMutableArray.new();
indexPaths.addObject(NSIndexPath.indexPathForRowInSection(rowIndex, event.groupIndex));
listView.ios.reloadItemsAtIndexPaths(indexPaths);

上面的代码强制列表视图单元重新布局。

答案 1 :(得分:0)

如果您不想使用forceLayout解决方案,则需要以Label的高度进行游戏。我为您here更新了一个游乐场。

  <Label [text]="country.name" class="list-group-item-heading" height="100" textWrap="true" verticalAlignment="center" style="width: 60%"></Label>
ng0template中的

Label具有预定义的高度100,因此在tal上,当文本变大时,不需要重新播放,并且textWrap在这里工作得很好。