字符串的字体和显示 (3)
安卓有三种字符串,String, String Array, Quantity String(Plurals).
String和String Array容易理解,一个是字符串,一个是字符串数组。
通过
String[] planets = res.getStringArray(R.array.planets_array);
就可以在代码中获得字符串数组。
第三种是一个特例,为什么叫Quantity呢?因为在英语中,一个苹果,one apple, 两个苹果,two apples,可以看到根据量词的不同,后面的名词也会做出相应的变化。所以为了区别这个很常见的语法习惯,Android单独一个Quantity字符串表示。
quantity可以用["zero" | "one" | "two" | "few" | "many" | "other"]这些表示,比如
<?xml version="1.0" encoding="utf-8"?>
<resources>
<plurals name="numberOfSongsAvailable">
<item quantity="one">%d song found.</item>
<item quantity="other">%d songs found.</item>
</plurals>
</resources>
一首歌的时候用前面的one内容,其它歌曲的时候用下面的内容,就会自动加上s后缀。
int count = getNumberOfSongsAvailable();
Resources res = getResources();
String songsFound = res.getQuantityString(R.plurals.numberOfSongsAvailable, count, count);
1.特殊字符串
安卓可以表示特殊字符串,比如&, ?, <等,一般都是用\@表示。
还支持像printf函数那样的格式化输出。
源码在appresources目录里面。
写了三个函数专门对字体进行加粗,斜体,颜色变化。
CharSequence style = bold(italic(getString(R.string.guide)), " ",
color(Color.RED, getString(R.string.guide)));
2.html格式
Android支持下面的html元素,可以在字符串中使用,
Bold: <b>, <em>
Italic: <i>, <cite>, <dfn>
25% larger text: <big>
20% smaller text: <small>
Strikethrough: <s>, <strike>, <del>
Underline: <u>
Superscript: <sup>
Subscript: <sub>
Bullet points: <ul>, <li>
Line breaks: <br>
Division: <div>
CSS style: <span style=”color|background_color|text-decoration”>
Paragraphs: <p dir=”rtl | ltr” style=”…”>
3.字体的替换
在res/font/文件夹中存放字体,然后使用利用Annotation对字符串进行解析,最终程序的显示效果
其中官方有个很好的应用展示各种材料设计,显示不同的内容。
https://github.com/nickbutcher/plaid