在button中添加两行文字

最近在做项目,碰到要在一个按钮上面添加文字,但是文字数量偏多,单行显示无法显示完整,就想要显示为双行。

在网上找到两种解决办法:

第一种是自定义布局,在布局中添加两个textview,将布局背景设置为系统默认按钮样式。但这样就失去了添加自定义背景图片的方式(或许是我没有想到另外的解决办法,未深入探究)。

第二种方法则是对字符串进行处理,添加'\n'。以下主要说明这种方法。

对于获取的字符串数据,在获取的时候是不会自动给你在需要添加"\n"的位置添加上"\n"的,因此,要先行添加"\n"。我是在字符串中间位置进行添加:

StringBuffer sBuffer = new StringBuffer(”要进行处理的字符串");

if (sBuffer.length() > 3){

sBuffer.insert(sBuffer.length() / 2, "\n");

}

这里是对StringBuffer判断其对象长度,大于3(可根据实际情况调整),则添加"\n",我是在中间位置添加。

SpannableString t = new SpannableString(sBuffer.toString());

创建SpannableString对象。对于SpannableString具体是一种什么样的东西,我也不是很清楚,但是网上有其用法,可以搜索查看一下。

t.setSpan(new AbsoluteSizeSpan(15, true), 0, sBuffer.length() / 2 - 1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
t.setSpan(new AbsoluteSizeSpan(15, true), sBuffer.length() / 2, sBuffer.length() - 1,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

在SpannableString的setSpan方法中,第一个参数是对字符串进行设置那种效果的对象(15为文本大小,true表示按与设备无关的尺寸),第二个,第三个参数分别为字符串中有效的开始位置和结束位置。第四个参数Spannable.SPAN_EXCLUSIVE_EXCLUSIVE表示不包含第一个值,也不包含最后一个。

进行以上处理之后就可以通过(view).setText();方法,将SpannableString对象的字符串添加到控件当中了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值