HarmonyOS 应用内字体大小调节

尝试通过用户操作设置字体缩放因子来更新页面字体大小值,但导航栈中已存在界面的相关组件的字体大小值不会自动刷新,请问有什么推荐的实现方案吗?

补充:

1.已尝试使用@State等状态管理装饰器来实现页面的自动刷新,但在使用每种字体时都需先将其标识为@State装饰;或采用@State装饰缩放因子,设置字体大小时传入缩放因子与原字体大小相乘的模式,使用都比较麻烦,不够直观

2.希望不用重启应用

HarmonyOS
2024-09-26 12:48:44
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
zxjiu

可以使用PersistentStorage持久化存储UI状态。

通过PersistentStorage将aFont持久化到本地,@StorageLink(‘aFont’) aFont 保证修改刷新,以及修改后持久化到本地,导航栈中已存在的也会刷新,关闭app重新打开也会保存。

//Index.ets  
import { router } from '@kit.ArkUI'  
  
PersistentStorage.persistProp('aFont', 20);  
  
@Entry  
@Component  
struct Index {  
  @StorageLink('aFont') aFont: number = 20  
  
  build() {  
    Row() {  
      Column() {  
        // 应用退出时会保存当前结果。重新启动后,会显示上一次的保存结果  
        Text(`${this.aFont}`)  
          .fontSize(this.aFont)  
          .onClick(() => {  
            this.aFont += 1;  
          })  
        Button('push')  
          .onClick(() => {  
            router.pushUrl({url:'pages/Page1'})  
          })  
      }  
      .width('100%')  
      .height('100%')  
    }  
  }  
}  
  
//Page1.ets  
  
@Entry  
@Component  
struct Page1 {  
  @StorageLink('aFont') aFont: number = 20  
  
  build() {  
    Row() {  
      Column() {  
        // 应用退出时会保存当前结果。重新启动后,会显示上一次的保存结果  
        Text(`${this.aFont}`)  
          .fontSize(this.aFont)  
          .onClick(() => {  
            this.aFont += 1;  
          })  
      }  
      .width('100%')  
      .height('100%')  
    }  
  }  
}

参考链接:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/arkts-persiststorage-V5#%E4%BB%8Eappstorage%E4%B8%AD%E8%AE%BF%E9%97%AEpersistentstorage%E5%88%9D%E5%A7%8B%E5%8C%96%E7%9A%84%E5%B1%9E%E6%80%A7

分享
微博
QQ
微信
回复
2024-09-26 15:40:11
相关问题
应用字体大小设置调整
206浏览 • 1回复 待解决
HarmonyOS 字体大小如何设置?
281浏览 • 1回复 待解决
HarmonyOS 怎么获取系统字体大小
421浏览 • 1回复 待解决
HarmonyOS 字体大小适配方案
343浏览 • 1回复 待解决
鸿蒙IndexBar如何设置字体大小
6820浏览 • 1回复 待解决
全局设置字体大小方案咨询
362浏览 • 1回复 待解决
JS ui支持vp、字体大小支持fp了吗?
6070浏览 • 1回复 待解决