Android string.xml 及通配符 %$ 取值用法

为了代码规范化,这几天尝试了string.xml的使用:

 

1、通配符的使用:

 

<string name="welcome_messages">Hello, %1$s! You have %2$d new messages.</string>

 

在上面代码中,这个格式化的字符串有2个参数

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

 

在java代码中照下面的方法来根据参数来格式化字符串:

 

 

Resources res = getResources();
String text = String.format(res.getString(R.string.welcome_messages), username, mailCount);

 

 

2、然后是数组的用法:

 

<string-array name="type_list">
        <item>全部</item>
        <item>充值记录</item>
        <item>网银消费</item>
        <item>充值消费</item>
    </string-array>

 

在java代码中照下面的方法来格式化数组:

 

getResources().getStringArray(R.array.type_list);

 

或者

 

this.getStringArray(R.array.type_list);

 

 

3、然后是image 图片资源的使用方法:

 

<string-array name="feed_icons">    
                <item>@drawable/latest</item>    
                <item>@drawable/video</item>    
                <item>@drawable/world</item>    
                <item>@drawable/sports</item>    
                <item>@drawable/arts</item>    
                <item>@drawable/dining</item>    
        </string-array> 

在java代码中使用方法:

 

 

Map<String, Object> map;    
        TypedArray ta = getResources().obtainTypedArray(R.array.feed_icons);    
        String[] titleArr = getResources().getStringArray(R.array.feed_names);    
        for(int i=0; i<titleArr.length; i++)    
        {    
            map = new HashMap<String, Object>();    
            map.put("icon", ta.getResourceId(i, 0));    
            map.put("title", titleArr[i]);    
            list.add(map);    
        } 

注意:TypedArray是关键,代码中去图片时候要这么用int id = ta.getResourceId(index, 0);

 

4、最后是字符串,这个最简单了。

 

<span style="white-space:pre">	</span><string name="old_pass">请输入旧密码</string>
<string name="new_pass">请输入新密码</string>
<string name="confirm_pass">请确认密码</string>

 取值很简单:

getResources().getString(R.string.name)

 

 

当然还可以直接在xml文件中使用,这里就不在赘述了!




另外,Html.fromHtml(text)支持的html标签却不只这些,具体有那些android平台并没有详细列举.在 HTML Tags Supported By TextView 有详细列举.但是额外的标签不能直接定义在xml中.貌似会被过滤掉.所以使用额外的标签时,必须用<![CDATA[ xx ]]>包围住.当然这样的字符串就不能直接在xml中调用了.只能通过代码使用.

 

<string name="welcome_info_2">        <![CDATA[欢迎你,<font color="#c5663e">%s</font>]]></string>

 

 

 

 

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值