<string name="xxx"> 的复杂用法:格式化及使用html标签
1.官方文档:
https://developer.android.com/guide/topics/resources/string-resource
2.格式化字符串
2.1 示例
<resources>
<string name="app_name">DataBind</string>
<string name="format">format : name=%$s,age=%$1d,value=%$32f </string>
<string name="int_format1"> -> \%%#-8X value = %1$#-8X </string>
<string name="int_format2"> -> \%%d value = %$d </string>
<string name="int_format3"> -> \%%o value = %$o </string>
<string name="int_format4"> -> \%%u 不支持 </string> <string name="float_format1">11.777777f -> \%%3f value = %$3f </string>
<string name="float_format2">11.777777f -> \%%f value = %$f </string>
<string name="float_format3">11.777777f -> \%%#e value = %$#E </string><!--#无效-->
<string name="float_format4">11.777777f -> \%%g value = %$G </string> <string name="char_format1"> \%%-5c\'A\' -> \%%5c value = %1$-5c </string>
<string name="char_format2">\"world\" -> \%%s value = %1$s </string> </resources>
结果如下:
2.2 语法格式
[ % + 第几个参数(从1开始) + $ + # (显示 + 空格补齐位数(小于实参则忽略,正数左补,负数右补) + 格式字符 ]
如: %1$#-8X 其中:
- 1 表示第1个参数
- # 显示进制符号
- -8 右边补齐空格至8位(不足8位则补空格,实参位数大于8则不补)
- X 表示16进制数
2.3 支持的格式化符号
格式字符 | 描述 |
d | 以十进制形式输出带符号整数(正数不输出符号) |
o | 以八进制形式输出无符号整数(不输出前缀0) |
x,X | 以十六进制形式输出无符号整数(不输出前缀Ox) |
f | 以小数形式输出单、双精度实数 |
e,E | 以指数形式输出单、双精度实数 |
g,G | 以%f或%e中较短的输出宽度输出单、双精度实数 |
c | 输出单个字符 |
s | 输出字符串 |
格式符号 u 表示以十进制形式输出无符号整数. 目前不支持
2.4 使用
- 在代码中
var text = getString(R.string.format, "李4",,333.333333f)
- 在数据绑定中使用
<TextView
android:id="@+id/tvFormat"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="24dp"
android:text='@{@string/format("李4",0x20,33.333333f),default=@string/format}'
app:layout_constraintStart_toStartOf="@+id/feature_edt"
app:layout_constraintTop_toBottomOf="@+id/features_txt1" />
3. 使用 HTML 标记设置样式
3.1 示例
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="welcome">Welcome to <b>Android</b>!</string>
</resources>
3.2 支持以下 HTML 元素
- 粗体:<b>、<em>
- 斜体:<i>、<cite>、<dfn>
- 文本放大 25%:<big>
- 文本缩小 20%:<small>
- 设置字体属性:<font face=”font_family“ color=”hex_color”>。可能的字体系列示例包括
monospace
、serif
和sans_serif
。 - 设置等宽字体系列:<tt>
- 删除线:<s>、<strike>、<del>
- 下划线:<u>
- 上标:<sup>
- 下标:<sub>
- 列表标记:<ul>、<li>
- 换行符:<br>
- 区隔标记:<div>
- CSS 样式:<span style=”color|background_color|text-decoration”>
- 段落:<p dir=”rtl | ltr” style=”…”>
3.3 用法
源串(下例中的username,mailCount)中没有html字符
val text: String = getString(R.string.welcome_messages, username, mailCount)
val styledText: Spanned = Html.fromHtml(text, FROM_HTML_MODE_LEGACY)
如果上面代码中的username中含有html字符,要先html编码它。
val escapedUsername: String = TextUtils.htmlEncode(username) val text: String = getString(R.string.welcome_messages, escapedUsername, mailCount)
val styledText: Spanned = Html.fromHtml(text, FROM_HTML_MODE_LEGACY)
<string name="xxx"> 的复杂用法:格式化及使用html标签的更多相关文章
- 自学Python1.8-python input/print用法 格式化输出
自学Python之路 自学Python1.8-python input/print用法 格式化输出 1.input函数 Python3.x 中 input() 函数接受一个标准输入数据,返回为 str ...
- required string parameter XXX is not present
@RequestParam jQuery调用方式: deleteFile: function(filePath) { return ajax({ method: 'POST', url: '/cm/s ...
- required string parameter 'XXX'is not present 的几种情况
required string parameter 'XXX'is not present 的几种情况 情况一:原因是由于头文件类型不对,可以在MediaType中选择合适的类型,例如GET和POST ...
- 报错:required string parameter XXX is not present
报错:required string parameter XXX is not present 不同工具发起的get/delete请求,大多数不支持@RequestParam,只支持@PathVari ...
- JAVA中String.format的用法 格式化字符串,格式化数字,日期时间格式化,
1.对整数进行格式化:%[index$][标识][最小宽度]转换方式 我们可以看到,格式化字符串由4部分组成,其中%[index$]的含义我们上面已经讲过,[最小宽度]的含义也很好理解, ...
- C#中string.format的格式和用法
String.Format 方法的几种定义: String.Format (String, Object) 将指定的 String 中的格式项替换为指定的 Object 实例的值的文本等效项. Str ...
- string.h文件中函数用法
下面为string.h文件中函数的详细用法: strcpy函数名:strcpy功 能: 拷贝一个字符串到另一个用 法: char *strcpy(char *destin, char *source) ...
- SQLAlchemy中解决数据库访问时出现的Incorrect string value: xxx at row 484
报错信息:Warning: (1366, "Incorrect string value: ‘\\xD6\\xD0\\xB9\\xFA\\xB1\\xEA...‘ for column ‘V ...
- String.format(String format,Object... args)的用法
String.format(String format, Object... args)方法详解 以前也看到过很多次这个用法,一直记不牢靠,今天整理一下. 我仅仅举几个例子稍做说明: String ...
随机推荐
- MVVM 框架
问题: 1.MVVM 的定义 M (Model): 数据来源,服务器上业务逻辑操作 V (View): 界面,页面 VM (ViewModel): view 和 model 的核心枢纽,如 vue.j ...
- Node.js异步IO原理剖析
为什么要异步I/O? 从用户体验角度讲,异步IO可以消除UI阻塞,快速响应资源 JavaScript是单线程的,它与UI渲染共用一个线程.所以在JavaScript执行的时候,UI渲染将处于停顿的状态 ...
- Kubernetes Pod OOM 排查日记
一.发现问题 在一次系统上线后,我们发现某几个节点在长时间运行后会出现内存持续飙升的问题,导致的结果就是Kubernetes集群的这个节点会把所在的Pod进行驱逐OOM:如果调度到同样问题的节点上,也 ...
- Springboot开启事务的支持
主要分为两步 步骤一.在main方法加上@EnableTransactionManagement注解: @SpringBootApplication @EnableTransactionManagem ...
- 2020-06-14:Redis怎么实现分布式锁?
福哥答案2020-06-14: 1.SETNX+EXPIRE.非原子性.2.SET key value [EX seconds] [PX milliseconds] [NX|XX]EX second ...
- C#LeetCode刷题-深度优先搜索
深度优先搜索篇 # 题名 刷题 通过率 难度 98 验证二叉搜索树 22.2% 中等 99 恢复二叉搜索树 45.1% 困难 100 相同的树 48.1% 简单 101 对称二叉树 4 ...
- Vue 过滤器 Filter传递参数
给日期类型过滤器设置不同格式 dayjs是一款轻量级的日期操作库 https://day.js.org/en import Vue from 'vue' import dayjs from 'dayj ...
- Golang | 既是接口又是类型,interface是什么神仙用法?
本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是golang专题的第12篇文章,我们来继续聊聊interface的使用. 在上一篇文章当中我们介绍了面向对象的一些基本概念,以及gol ...
- Qt 信号发射部分 undefined reference to错误
在使用信号与槽很容易发生 undefined reference to 发射信号 ①继承QObject ②添加Q_OBJECT ③执行qmake ④构建 然后就可以运行啦!但是不知道是为什么,悄咪咪 ...
- for循环的插入元素
Scanner input = new Scanner(System.in); int[] num = new int[5]; for (int i = 0; i < num.length; ...