对于数字时钟,您应尽可能使用 DigitalClock
。对于无法使用 DigitalClock
表示的所有其他文本或时钟,PartText
是基于文本的渲染容器。
根据您要显示圆形文本还是普通文本,PartText
应包含 Text
或 TextCircular
元素。
使用字体和位图字体
使用自定义字体可让表盘以其独特的风格脱颖而出。
在 TimeText
和 PartText
容器中,使用自定义字体的两种方法。
在
Font
元素中指定自定义字体family
。支持一系列常见格式,这些格式必须放置在res/font
中例如,使用 Google Fonts 中的 Pacifico 字体,并将资源放置为 res/font/pacifico.ttf:
<PartText x="0" y="100" width="450" height="250"> <Text align="CENTER"> <Font family="pacifico" size="96">Hello!</Font> </Text> </PartText>
或者,在
res/drawable
中定义用于提供位图图片的BitmapFont
:<WatchFace width="450" height="450" clipShape="CIRCLE"> <BitmapFonts> <BitmapFont name="myhandwriting"> <Character name="1" resource="digit1" width="50" height="100" /> <Character name="2" resource="digit2" width="50" height="100" /> <Character name="3" resource="digit3" width="50" height="100" /> <Character name="4" resource="digit4" width="50" height="100" /> <!-- ... --> <!-- Treat "12" specially, instead of a 1 followed by a 2--> <Word name="12" resource="digit12" width="80" height="100" /> </BitmapFont> </BitmapFonts> <!-- ... -->
请注意如何对字符序列进行特殊处理。例如,如果要使用连接的 1 和 2 表示“12”,可以使用 Word
元素来实现。
如需使用定义的字体,请执行以下操作:
<TimeText ... format="hh:mm">
<BitmapFont family="myhandwriting" size="48" color="#ff0000" />
</TimeText>
文字效果
表盘格式提供了多种可应用的文本效果,例如 OutGlow
和 Shadow
。如需使用这些元素,请将其作为 Font
元素的子元素应用:
<Font family="pacifico" size="96" color="#e2a0ff">
<OutGlow color="#e8ffb7" radius="30">Hello!</OutGlow>
</Font>
使用模板
您可能需要根据数据源或表达式构建文本,而不是使用静态文本。
借助 Template
元素,您可以执行以下操作:
<PartText x="100" y="150" width="300" height="120" >
<Text align="CENTER">
<Font family="pacifico" size="60" weight="BOLD" color="#ffffff">
<Template>Day: %s<Parameter expression="[DAY_OF_WEEK_S]" /></Template>
</Font>
</Text>
</PartText>
使用资源
如果您的静态文本是在资源(例如 res/values/strings.xml
)中定义的,则可以按如下方式引用它:
<PartText x="100" y="150" width="300" height="120" >
<Text align="CENTER">
<!-- greeting defined in res/values/strings.xml -->
<Font family="pacifico" size="60" weight="BOLD" color="#ffffff">greeting</Font>
</Text>
</PartText>
这样,您还可以使用不同的资源限定符本地化表盘。
手柄间距
在处理间距和文本时,可能会遇到一些问题:
<!-- greeting defined in res/values/strings.xml -->
<!-- Works correctly: -->
<Font family="pacifico" size="60" weight="BOLD" color="#ffffff">greeting</Font>
<!-- Does not render in the right place because of whitespace -->
<Font family="pacifico" size="60" weight="BOLD" color="#ffffff">
greeting
</Font>
这是因为 XML 中空格很重要。为避免这种情况,请将 Font
内容封装在 CDATA
元素中:
<!-- Works correctly -->
<Font family="pacifico" size="60" weight="BOLD" color="#ffffff">
<![CDATA[greeting]]>
</Font>
尝试居中对齐文本时,您可以看到另一个示例:
<!-- Does not render as expected - leading spaces are a problem -->
<PartText x="100" y="150" width="250" height="120" >
<Text align="CENTER">
<Font family="pacifico" size="60" weight="BOLD" color="#ffffff">
Hello
</Font>
</Text>
</PartText>
<!-- Works correctly -->
<PartText x="100" y="150" width="250" height="120" >
<Text align="CENTER">
<Font family="pacifico" size="60" weight="BOLD" color="#ffffff">
<![CDATA[Hello]]>
</Font>
</Text>
</PartText>
多行文本
如需创建多行文本,请对 Text
使用 maxLines
属性:
<PartText x="75" y="100" width="300" height="350" >
<Text align="CENTER" maxLines="2">
<Font family="pacifico" size="60" weight="BOLD" color="#ffffff">
<![CDATA[Hello Wear OS world]]>
</Font>
</Text>
</PartText>