最近被新来的小伙伴以及一些刚入门的同学问到一个问题,怎么在textview的一个字符串已有格式中加入数字等信息。
统计了下问这个问题的小伙伴还不少,这种用法虽然基础,但也有必要简单的开个帖子,让大家作为参考,能快速间接的根据教程完成需求。
例如我要在textview里显示这样一句话,“我是Tomes,今年18岁”,这里我想动态的去把“18”这个数字显示出来,当然你能通过多个textview去拼接的方式去完成,但要只用一个TextView只动态的更改其中的年龄该怎么做呢?
实现步骤:
1、在string.xml中先定义好格式:
<string name="author_info">我是Tomes,今年%1$d岁</string>
2、在布局文件xml中使用:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/tv_author_info"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/author_info"/>
</LinearLayout>
3、在java代码中格式字符串,代码很简单,不做过多累述:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView tvAuthorInfo = findViewById(R.id.tv_author_info);
String info = getResources().getString(R.string.author_info);
//这里的18对应字符串“我是Tomes,今年%1$d岁” 第一个占位符%1中的“$d”整数类型
String authorInfo = String.format(info, 18);
tvAuthorInfo.setText(authorInfo);
}
}
显示效果:
ok。功能完成。
这里作为快速入门使用已经足够。
扩展知识:
多个地方插入,仅需增加占位符%1 %2 %3就行,依此类推。至于新加的数据类型,这里给出对照表。大家可以动手自己去实现你想要的效果。
不同转换符实现不同数据类型到字符串的转换 |
---|
转 换 符 | 说 明 | 示 例 |
---|---|---|
%s | 字符串类型 | "mingrisoft" |
%c | 字符类型 | 'm' |
%b | 布尔类型 | true |
%d | 整数类型(十进制) | 99 |
%x | 整数类型(十六进制) | FF |
%o | 整数类型(八进制) | 77 |
%f | 浮点类型 | 99.99 |
%a | 十六进制浮点类型 | FF.35AE |
%e | 指数类型 | 9.38e+5 |
%g | 通用浮点类型(f和e类型中较短的) | —— |
%h | 散列码 | —— |
%% | 百分比类型 | % |
%n | 换行符 | —— |
%tx | 日期与时间类型(x代表不同的日期与时间转换符) | —— |
更详细的参考: