类似效果:今天是2016年2月1日1点
检查字符串中的数字,在一个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<>();
@Override
protected 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);
}
}