Я создаю приложение nativescript angular с полосой вкладок, и на одной из страниц есть панель поиска и результаты, отображаемые в ListView. Возвращаемые результаты могут различаться по длине, поэтому высота каждого элемента может быть разной. Все отображается нормально, когда результаты поиска возвращаются, однако, если я go перехожу на другую «страницу» через полосу вкладок и возвращаюсь, iOS redr aws все элементы списка имеют одинаковую высоту, в результате чего некоторые результаты будут вырезаны выкл, а другие должны иметь тонну белого пространства.
Если я начинаю прокручивать список вверх и вниз, и становятся видимыми различные элементы, они начинают исправляться, что приводит к резкому скачку результатов вниз / вверх при изменении высоты. Это не проблема Android. Что я делаю не так?
<GridLayout rows="auto *" class="p-20">
<GridLayout row="0" rows="*">
<StackLayout row="0" class="input-field">
<SearchBar #searchField hint="Search ..." class="input" (submit)="startSearch($event)" (clear)="startSearch($event)"></SearchBar>
</StackLayout>
</GridLayout>
<GridLayout row="1">
<ActivityIndicator [busy]="isSearchingKJ"></ActivityIndicator>
<ListView *ngIf="kjResults?.length > 0" [items]="kjResults" (itemTap)="select($event)">
<ng-template let-item="item" let-i="index">
<StackLayout>
<Label class="search" [text]="item.book + ' ' + item.chapter + ':' + item.verse"></Label>
<Label class="search-results" textWrap="true" (loaded)="displaySearchResult($event, item)"></Label>
</StackLayout>
</ng-template>
</ListView>
</GridLayout>
</GridLayout>
Вот код, генерирующий форматированный текст для каждого элемента:
displaySearchResult(args, result) {
const container = <Label>args.object;
const formattedStringLabel = new FormattedString();
for (const fragment of result.text) {
const span = new Span();
span.text = fragment.text;
if (fragment.highlight) {
span.fontWeight = '800';
}
formattedStringLabel.spans.push(span);
}
container.formattedText = formattedStringLabel;
}
Пример iOS графических сбоев: