HarmonyOS %s、%d这种动态更新文本的方法是如何实现的

类似动态拼接文本的方法,HarmonyOS 中是如何实现的

HarmonyOS
2天前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
shlp

可以这样修改string资源:{"name": "str_retry","value": "请在%d秒后重试"},this.countdown这个应该是getStringSync这个方法的参数而不是$r()的参数,您位置放错了;另外每次数值变化都要重新赋值

@Entry
@Component
struct Index {
  // 倒计时
  @State countdown: number = 60;
  // 属性字符串
  mutableStyledString: MutableStyledString = new MutableStyledString(getContext().resourceManager.getStringSync($r('app.string.str_retry'),this.countdown));
  controller: TextController = new TextController();

  async onPageShow() {
    this.controller.setStyledString(this.mutableStyledString)
  }
  // 开始倒计时
  aboutToAppear() {
    setInterval(() => {
      this.countdown--;
      this.mutableStyledString = new MutableStyledString(getContext().resourceManager.getStringSync($r('app.string.str_retry'),this.countdown));
      this.controller.setStyledString(this.mutableStyledString)
    }, 1000)
  }

  build() {
    Column() {
      Text(undefined, { controller: this.controller }).key('mutableStyledString') // 始终显示“请在%d秒后重试”
      // Text($r('app.string.str_retry', this.countdown)) // 显示“请在60秒后重试”且正常倒数
    }
  }
}
分享
微博
QQ
微信
回复
2天前
相关问题
HarmonyOS 动态hook实例方法如何实现
660浏览 • 1回复 待解决
30s怎么更新什么时候更新
6859浏览 • 1回复 待解决
HarmonyOS @State无法更新组件文本
22浏览 • 1回复 待解决
HarmonyOS Path2DaddPath方法报错
271浏览 • 1回复 待解决
按钮内子控件如何动态更新
870浏览 • 1回复 待解决
Canvas绘制内容如何动态更新
1695浏览 • 1回复 待解决