gpt4 book ai didi

Nativescript 以编程方式滚动到 ScrollView 的底部

转载 作者:行者123 更新时间:2023-12-04 05:08:14 24 4
gpt4 key购买 nike

在我的 Nativescript Angular 应用程序中,我在 ScrollView 中有一个 TextView,定义如下:

<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>

此元素的目的是充当终端,并快速打印来自蓝牙设备的传入消息。

目前,每当我向 terminalText 添加一些文本时,ScrollView 都会滚动回顶部。 TextView 绑定(bind)到的变量。 我希望能够将 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);
}
}

(此尝试基于给出的解释 here

我只在 Android 设备上尝试过,因为我无法访问 Apple 设备。

最佳答案

您正在设置 TextView到固定高度 100% 这将与 ScrollView 相同这就是为什么scrollableHeight将始终为 0。您应该使用 minHeight="100%" .

然后您可以在将文本附加到终端文本时以编程方式滚动到末尾 this.terminalText += appendStr .

像这样

public appendToTerminal(appendStr){
this.terminalText += appendStr;
setTimeout(()=>{
scrollView.scrollToVerticalOffset(scrollView.scrollableHeight, false);

},150);
}

这将附加文本然后获取 scrollableHeight 然后滚动到它。

这是工作场演示: https://play.nativescript.org/?template=play-ng&id=Rs0xnP&v=16

关于Nativescript 以编程方式滚动到 ScrollView 的底部,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51181694/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com