先看以下这个案例,然后在分析:

string.xml 使用xliff,需要导入命名空间 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"

<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">

    <string name="app_name">UI_All</string>

    <!-- >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 以下是浮点型系列 -/>
<!- 显示浮点类型 %n$mf m=1.2小数点后面有两位 -->
<string name="cost_money" msgid="7137320847812992243">花费<xliff:g id="number">%1$1.2f</xliff:g>块</string> <!-- 显示浮点类型 %n$mf m=1.3小数点后面有三位-->
<string name="cost_money_2">您消费了<xliff:g id="number2">%1$1.3f</xliff:g>元</string> <!-- 显示浮点类型 %n$mf m=1.9小数点后面有九位-->
<string name="cost_money_3">您支付了<xliff:g id="number3">%1$1.9f</xliff:g>元钱</string> <!-- 显示浮点类型 %n$mf m=9.5小数点后面有五位 9.5的9理解位空格 -->
<string name="cost_money_4">您扣除了<xliff:g id="number4">%1$9.5f</xliff:g>元钱</string> <!-- >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 以下是整型系列 -->
<string name="count">这个办公室有<xliff:g id="count">%1$d</xliff:g>个工程师</string>
<string name="count2">这个办公室有<xliff:g id="count2">%1$9d</xliff:g>个工程师</string> <!-- >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 以下是字符串型系列 -->
<string name="string">请求网络读取交易信息异常,详情是<xliff:g id="string">%1$s</xliff:g>行号890行</string>
<string name="string2">此书名是<xliff:g id="string2">%1$9s</xliff:g>设计模式书籍</string> <!-- 多个xliff 由于多个xliff 和 显示类型无关,以下就随意以浮点型 示例 -->
<string name="total_points">\t第一名<xliff:g id="t1">%1$1.2f</xliff:g>分\n\t第二名<xliff:g id="t2">%2$1.2f</xliff:g>分</string>
<string name="welcome">
欢迎 <xliff:g id="name">%1$s</xliff:g>, 排名 <xliff:g id="num">%2$d</xliff:g>
</string> </resources>

activity_stirng.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="20dp"> <!-- 以下是整数系列>>>>>>>>>>>>>>>>>> -->
<!-- 浮点型,小数点后面三位 -->
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/cost_money" /> <TextView
android:id="@+id/tv_info1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:text="浮点型,小数点后面两位"
/> <TextView
android:id="@+id/tv_info2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:text="浮点型,小数点后面三位"
/> <TextView
android:id="@+id/tv_info3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:text="浮点型,小数点后面九位"
/> <TextView
android:id="@+id/tv_info4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:text="浮点型,小数点后面五位,有空格 m=9.5 9代表空格"
/> <!-- 以下是整数系列>>>>>>>>>>>>>>>>>> -->
<TextView
android:id="@+id/tv_info5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="整数"
android:layout_marginTop="40dp"
/> <TextView
android:id="@+id/tv_info6"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="整数有空格"
android:layout_marginTop="20dp"
/> <!-- 以下是字符串系列>>>>>>>>>>>>>>>>>> -->
<TextView
android:id="@+id/tv_info7"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:text="字符串"
/> <TextView
android:id="@+id/tv_info8"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:text="字符串 有空格"
/> <!-- 以下是多个xliff -->
<TextView
android:id="@+id/tv_info9"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="40dp"
android:text="以下是多个xliff"
/>
<TextView
android:id="@+id/tv_info10"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:text="以下是多个xliff 欢迎"
/> </LinearLayout>

Activity

package liudeli.ui.all;

import android.annotation.SuppressLint;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView; public class StringActivity extends Activity { private TextView tv_info1, tv_info2, tv_info3, tv_info4,
tv_info5, tv_info6, tv_info7, tv_info8, tv_info9,
tv_info10; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); setContentView(R.layout.activity_string); tv_info1 = findViewById(R.id.tv_info1);
tv_info2 = findViewById(R.id.tv_info2);
tv_info3 = findViewById(R.id.tv_info3);
tv_info4 = findViewById(R.id.tv_info4);
tv_info5 = findViewById(R.id.tv_info5);
tv_info6 = findViewById(R.id.tv_info6);
tv_info7 = findViewById(R.id.tv_info7);
tv_info8 = findViewById(R.id.tv_info8);
tv_info9 = findViewById(R.id.tv_info9);
tv_info10 = findViewById(R.id.tv_info10); initStringData();
} @SuppressLint("StringFormatMatches")
protected void initStringData() { String cost1 = getString(R.string.cost_money, 5.5);
tv_info1.setText(cost1); String cost2 = getString(R.string.cost_money_2, 22.99);
tv_info2.setText(cost2); String cost3 = getString(R.string.cost_money_3, 88.77);
tv_info3.setText(cost3); String cost4 = getString(R.string.cost_money_4, 88.77);
tv_info4.setText(cost4); String cost5 = getString(R.string.count, 200);
tv_info5.setText(cost5); String cost6 = getString(R.string.count2, 600);
tv_info6.setText(cost6); String cost7 = getString(R.string.string, "严重的内存溢出(原因-图片申请控件过大");
tv_info7.setText(cost7); String cost8 = getString(R.string.string2, "大话");
tv_info8.setText(cost8); String cost9 = getString(R.string.total_points, 539.81, 695.99);
tv_info9.setText(cost9); String s = getString(R.string.welcome, "abc", 123);
tv_info10.setText(s); }
}

效果:


分析:

%n$md:输出的是整数,n代表是第几个参数,设置m的值可以在输出之前放置空格,也可以设为0m,在输出之前放置m个0 

以下代码会报错❌,因为整数这种方式,m不能等于 9.9 不能是浮点型,可以是9

<string name="count2">这个办公室有<xliff:g id="count2">%1$9.9d</xliff:g>个工程师</string>

以下代码是正确的✅

<string name="count2">这个办公室有<xliff:g id="count2">%1$9d</xliff:g>个工程师</string>

%n$mf:输出的是浮点数,n代表是第几个参数,设置m的值可以在输出之前放置空格,设置m的值可以控制小数位数,如m=2.2时,输出格式为00.00

以下代码是正确的✅

<string name="cost_money_4">您扣除了<xliff:g id="number4">%1$9.5f</xliff:g>元钱</string>

以下代码是错误的❌,设置后,无空格效果,m必须是浮点型,整型无效果

<string name="cost_money_4">您扣除了<xliff:g id="number4">%1$9f</xliff:g>元钱</string>

%n$ms:输出的是字符串,n代表是第几个参数,设置m的值可以在输出之前放置空格

以下代码是没有空格:%1$s

<string name="string2">此书名是<xliff:g id="string2">%1$s</xliff:g>设计模式书籍</string>

以下代码是有空格的:%1$9s

<string name="string2">此书名是<xliff:g id="string2">%1$9s</xliff:g>设计模式书籍</string>

以下代码是有空格的:%1$9.9s 效果和 %1$9s 是一样的空格量

<string name="string2">此书名是<xliff:g id="string2">%1$9.9s</xliff:g>设计模式书籍</string>

Android-xliff的更多相关文章

  1. android xml中的xliff属性

    <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff=" ...

  2. <Android 基础(十八)> XLIFF

    介绍 XLIFF ,XML Localization Interchange File Format,XML本地化数据交换格式. 实际使用 1.布局文件 activity_main.xml <? ...

  3. Android中string.xml中的的标签xliff:g(转载)

    转自:http://blog.csdn.net/xuewater/article/details/25687987 在资源文件中写字符串时,如果这个字符串时动态的,又不确定的值在里面,我们就可以用xl ...

  4. android nfc中MifareClassic格式的读写

    Android支持的数据格式 数据格式的Intent filter AndroidManifest.xml文件中,要像向下列示例那样,在<activity>元素内的<meta-dat ...

  5. 【转】Android NFC学习笔记

    一:NFC的tag分发系统 如果想让android设备感应到NFC标签,你要保证两点 1:屏幕没有锁住 2:NFC功能已经在设置中打开 当系统检测到一个NFC标签的时候,他会自动去寻找最合适的acti ...

  6. <xliff:g>标签

    摘要: 这是Android4.3Mms源码中的strings.xml的一段代码: <!--Settings item desciption for integer auto-delete sms ...

  7. Android NFC开发概述

    NFC手机相比普通手机来说,有以下3个附加功能:  1.可以当成POS机来用,也就是“读取”模式   2.可以当成一张卡来刷,也就是NFC技术最核心的移动支付功能  3.可以像蓝牙.Wi-Fi一样做点 ...

  8. 修改Android系统字号(一)

    /*********************************************************************** * 修改Android系统字号(一) * 说明: * ...

  9. 在Android中访问内置SE和基于SE的卡模拟(一)

    2013-10-10 编写 前言 在“十问Android NFC手机上的卡模拟”文中仅仅简单的介绍了一下相关的概念,如果需要了解基于SE的卡模拟的更多细节,也就是,究竟在Android的NFC手机上, ...

  10. Android的TextView使用Html来处理图片显示、字体样式、超链接等

    一.[Android实例]实现TextView里的文字有不同颜色 转eoe:http://www.eoeandroid.com/thread-4496-1-1.html import android. ...

随机推荐

  1. Docker虚拟化实战学习——基础篇(转)

    Docker虚拟化实战学习——基础篇 2018年05月26日 02:17:24 北纬34度停留 阅读数:773更多 个人分类: Docker   Docker虚拟化实战和企业案例演练 深入剖析虚拟化技 ...

  2. php7.0-fpm.sock

    .sock  这种方式是套接字的方式连接的

  3. [Python] Python教程

    http://www.runoob.com/python/python-tutorial.html  

  4. ES开发的一些坑(一)

    一.ES-Hadoop导数据的时候报"Could not write all entries"异常  ES-Hadoop是一个开源的数据导入项目,支持数据从hdfs,hive,sp ...

  5. linux代码常用查询!!!!!!!!!!!!

    字符串: echo "a b c d e f"|cut -d ' ' -f1            输出a echo "a b c d e f"|cut -d  ...

  6. idea maven 创建webapp项目没有src目录

    archetypeCatalog=internal

  7. ajax的基础

    去年也是这个时候,开始学了ajax,也是这个技术领我走上了网页制作的道路,于是这样感觉到手写html比之前的dw拖拖拽拽要有意思得多. 话不多说,下面是一个例子: 这个是ajax显示页面:index. ...

  8. Java学习笔记:数据校验

    在后台开发过程中,需要对参数进行校验. validation bean 是基于JSR-303标准开发出来的,使用注解的方式实现,是一套规范,可以实现参数的校验. Hibernate Validator ...

  9. git舍弃文件更改

    未进行任何提交,即文件更改在工作区 # filename 对应进行操作的文件名 git checkout -- filename 已用git add 命令提交,即文件更改在暂存区 # 舍弃暂存区的修改 ...

  10. 三大框架中各种xml的存放位置

      web.xml中classpath:和classpath*:  有什么区别? classpath:只会到你的class路径中查找找文件; classpath*:不仅包含class路径,还包括jar ...