TileService新UI Builder API是否支持自定义字体?如何设置?
TileService自定义字体设置方案
是否支持自定义字体?
TileService的新UI Builder API支持自定义字体,只是需要通过资源关联的方式实现,而非直接在LayoutElementBuilders.FontStyle.Builder或LayoutElementBuilders.Text类中调用方法。
具体实现步骤
第一步:添加字体资源
将自定义字体文件(.ttf/.otf格式)放入项目的res/font/目录(若不存在该目录则手动创建)。第二步:创建字体资源实例
通过FontResource引用你的自定义字体:val customFont = FontResource.Builder() .setResourceId(R.font.your_custom_font) // 替换为你的字体资源ID .build()第三步:构建资源提供者
将自定义字体添加到ResourcesProvider中,供Tile加载:val resourcesProvider = ResourcesProvider.Builder() .addFont(customFont) .build()第四步:在文本元素中指定自定义字体
通过FontStyle.Builder的setFontFamily方法,以font://前缀+资源ID的格式关联字体:val customText = Text.Builder() .setText("自定义字体展示文本") .setFontStyle( FontStyle.Builder() .setFontFamily("font://${R.font.your_custom_font}") .build() ) .build()第五步:在Tile构建时关联资源提供者
在onTileRequest方法中,将ResourcesProvider绑定到Tile.Builder:override suspend fun onTileRequest(requestParams: RequestParams): Tile { val rootLayout = Layout.Builder() .setRoot(customText) .build() return Tile.Builder() .setResourcesVersion("1") // 更新字体时需修改此版本号,触发资源刷新 .setTileLayout(rootLayout) .setResourcesProvider(resourcesProvider) .build() }
注意事项
- 确保字体文件路径和资源ID正确,否则无法加载字体。
- 每次更新字体资源后,必须修改
setResourcesVersion的参数值,否则系统会使用缓存的旧资源。 - 选择适合Wear OS屏幕尺寸的字体,避免因字体过大导致布局错位。
内容的提问来源于stack exchange,提问作者Abu Yousuf
相关产品推荐
相关产品推荐

