开发手记--android布局用占位符%1$s

本文介绍了一种使用占位符简化ListView布局的方法,通过定义含有占位符的字符串资源,在Java代码中利用String.format()方法填充具体值,从而减少布局文件中的TextView数量,使布局更加简洁。此外还介绍了如何处理HTML格式的文本。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在开发中,如果遇到如下listview的item布局

以前总是把“物料名称:”作为一个TextView,后面具体值作为一个TextView。这样做使得布局变得很繁琐。后来发现可以使用占位符%1$s使其变成一个TextView,使得布局变得简单。

1.在strings.xml中定义<string name="material_name">物料名称:%1$s</string>

2.在布局TextView中引入  

 

<TextView
            android:id="@+id/tv_material_name" 
            style="@style/text_delivery_order"
            android:text="@string/material_name"/>

 

3.在Java代码中进行赋值

 

 

.setText(String.format(getResources().getString(R.string.material_name),"食用油"));

下面是封装的String.format()方法:

 public static String stringFromat(Context context, int sId, Object... args) {
        if (sId == 0 || args == null)
            return null;
        return String.format(context.getResources().getString(sId), args);
    }

扩展:还可以添加多个占位符<string name="my">我叫:%1$s,我来自%2$s,我做%3$s工作</string>

 

.setText(String.format(getResources().getString(R.string.my),"小明","北京","程序员");

常用的有:

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

(注:m放置空格,并不代表m是几,就是几个空格,具体看实际效果)

补充:

在string.xml中可以加入 HTML元素:<b>表示粗文本 <i>表示斜体文本 <u>表示下划线文本 ,但是如果使用占位符format的时候,会出现失效的情况。需要使用 htmlEncode(String) 对用于带格式文本的字符串中任何可能的 HTML 字符进行转义。如果您向 String.format() 传递的字符串参数可能包含“<”或“&”之类的字符,则必须在设置格式前进行转义,这样在通过 fromHtml(String) 传递带格式字符串时,字符就能以原始形式显示出来。 

 <string name="audit_title_str"><u>  %1$s  </u>量化审核工作指南</string>
 String escapedUsername = TextUtil.htmlEncode(username);
 Resources res = getResources();
 String text = String.format(res.getString(R.string.audit_title_str), escapedUsername);
 .setText(Html.fromHtml(text));

空格:&#160;   <: &lt;     >:&gt;

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值