В моем приложении Nativescript Angular у меня есть TextView в ScrollView, определенный как:
<ScrollView orientation="vertical" height="70%" width="100%" style="margin-bottom: 1%; background-color:white" (loaded)="onScrollerLoaded($event)">
<TextView
id="terminal" [text]="terminalText" editable="false"
style="color: whitesmoke; background-color: black; font-size: 8%; font-family: monospace" height="100%"
(tap)="onTap($event)" (loaded)="onTerminalLoaded($event)">
</TextView>
</ScrollView>
Цель этого элемента - действовать как терминал и быстро распечатывать входящие сообщения с устройства Bluetooth.
В настоящее время ScrollView прокручивается обратно к вершине всякий раз, когда я добавляю некоторый текст в переменную terminalText
, к которой привязан TextView. Я хотел бы иметь возможность держать ScrollView в нижней части TextView.
Несколько заметок:
Я добавляю текст в переменную terminalText
в классе связанных компонентов с помощью этого метода:
public appendToTerminal(appendStr){
this.terminalText += appendStr;
}
Я попытался реализовать следующий код, который будет выполняться после загрузки ScrollView:
private scrollIntervalId;
onScrollerLoaded(data: EventData){
if(!this.scrollIntervalId){
this.scrollIntervalId = setInterval(()=>{
this.ngZone.run(() =>
(data.object as any).scrollToVerticalOffset((data.object as any).scrollableHeight, false)
)
}, 10);
}
}
(Эта попытка основана на объяснении, данном здесь
Я пробовал это только на устройстве Android, так как у меня нет доступа к устройству Apple.