您的位置:首页 > 产品设计 > UI/UE

Android开发之values/strings中的%1$s等符号用法

2014-11-05 09:30 405 查看
在改版公司的Android移动App的时候,碰到了这样的一个引用,以前写代码的时候从来没有用到过,所以找资料学习了一下

在strings.xml中碰到如下代码:

<string name="update">上次更新于:%1$s</string>
在Layout中引用:

<TextView  
                android:id="@+id/update"  
                android:layout_width="fill_parent"  
                android:layout_height="0dip"  
                android:layout_weight="1"  
                android:gravity="center_horizontal|top"
                android:textColor="@color/lightgray"   
                android:text="@string/update" />    //引用string里面的update
在Activity里面获取这个值并改变这个值的内容:

String value = "2014.11.5";  
            updateAt = String.format(getResources().getString(R.string.update), value);


这个会在手机的UI显示:上次更新于:2014.11.5

这个值被改变了,怎么改变的,我们先了解一下%1$s是什么意思。

相信学习J***A的都知道

%s,%d,%c,%f这是J***A中格式输出符了

所以,%1$s就是输出一个字符串的意思,如果需要输出第二个字符串则写%2$s,如此类推。

至于$应该是某种控制符

清楚了格式,我们看看怎么改变该值

取值:
String str = getResources().getString(R.string.update);
替换:
String value = String.format(str, "2014.11.5");


注意:如果替换的是整形的话,就不需要双引号,不过也是从String里面取值,如下:
<string name="money">年收入%1$d</string>


String money = getResources().getString(R.string.money);    
String salary = String.format(money, 10000);


如果有多个要替换的,则按顺序替换。

除此之外,还可以用xliff(XML Localization Interchange File Format:XML本地数据化交换格式)用法,不过这个我没有用到,只是了解了一下,大概的实现也差不多,就是输出格式和xml的文件有点不一样

输出格式:

%n$ms:n代表第几个参数,m是输出前放置的空格数

%n$md:n代表第几个参数,m是输出前放置的空格数,0m是m个0

%n$mf:n代表第几个参数,m控制小数输出位数,m=2.2时,输出00.00(不过在在开发过程中只能限制小数点后面的位数)

xml:

<resources xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">

    <string name="app_name">Test</string>
    <string name="test">本金:<xliff:g id="money">%1$2.2f</xliff:g></string>

</resources>


在取值也一样,捕获获取到xliff的id,多个值要改变时,只需要按顺序传入
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: