Android——修改字符串中所有数字的样式

来源:互联网 发布:mac zip 解压命令 编辑:程序博客网 时间:2024/05/14 00:49

类似效果:今天是2016211

检查字符串中的数字,在一个TextView上显示

package com.example.textcolordemo;import java.util.ArrayList;import java.util.List;import java.util.regex.Matcher;import java.util.regex.Pattern;import android.app.Activity;import android.os.Bundle;import android.text.SpannableString;import android.text.Spanned;import android.text.style.TextAppearanceSpan;import android.widget.TextView;public class MainActivity extends Activity {private TextView myTv;String str = "今天是2016年2月1日9点";SpannableString styledText = new SpannableString(str);static List<String> intStr = new ArrayList<>();@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);myTv = (TextView) findViewById(R.id.myTv);initInvestInfo(str);}/** * 根据位置设置字体样式 * @param a * @param b */public void setTextStyle(int a,int b){styledText.setSpan(new TextAppearanceSpan(this, R.style.person_weixin_larger_text), a, b,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);// 正常时的样式}/** * 查找数字,并对样式进行设置 * @param info */private void initInvestInfo(String info) {        String regex = "\\d*";        Pattern p = Pattern.compile(regex);        Matcher m = p.matcher(info);        boolean initFirst = true;        while (m.find()) {            intStr.add(m.group().trim());        }        int positionArray[][] = new int[intStr.size()][2];        int firstPos = 0;        int lastPos = 0;        for (int i = 0; i < intStr.size(); i++) {            if (!intStr.get(i).trim().equals("")) {                // 获取到数字的位置                firstPos = info.indexOf(intStr.get(i), lastPos);                lastPos = firstPos + intStr.get(i).length();                positionArray[i][0] = firstPos;                positionArray[i][1] = lastPos;                // 让固定位置的数字显示为红色                setTextStyle(firstPos, lastPos);            }        }        myTv.setText(styledText);    }}


0 0