我有一个TextView,应该全部大写,并将其中发现的任何URL标记为特定颜色,因此我尝试使用textColorLink,并选择选项textAllCaps="true",但是URL没有着色,我的猜测是正则表达式不匹配大写字母的URL,因为如果相同的文本以小写形式出现,则URL会被着色。
我尝试用以下方法解决这个问题:
Spannable formatted = new SpannableString(text);
Pattern url = Pattern.compile(
"(https?)://[-a-zA-Z0-9+&@#/%?=~_|!:,.;]*[-a-zA-Z0-9+&@#/%=~_|]");
Matcher matcher = url.matcher(text.toLowerCase());
while (matcher.find())
{
Log.e("TEST",matcher.group());
int begIndex = matcher.start();
int endIdx = begIndex + matcher.group().length() - 1;
Log.e("Found", String.valueOf(begIndex));
formatted.setSpan(new ForegroundColorSpan(
getResources().getColor(android.R.color.holo_red_light)),
begIndex, endIdx, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
}
mTextView.setText(formatted);
显然它找到了文本,但是再次没有着色。我已经做了几个小时了,你该如何解决这个问题?