/**
* TextView 点击评论@事件监听
* @param mContext
* @param charSequence
* @return
*/
public static SpannableString getClickableSpan(final Context mContext,
final CharSequence charSequence) {
final String replyContent = charSequence.toString();
SpannableString sp = new SpannableString(
ExpressionsUtils
.stringToExpressionsView(mContext, replyContent));
ArrayList<HashMap<String, Integer>> mapList = new ArrayList<HashMap<String, Integer>>();
Pattern pattern = Pattern.compile("@(\\w+) ");
Matcher matcher = pattern.matcher(replyContent);
while (matcher.find()) {
System.out.println(matcher.group(1));
HashMap<String, Integer> hashMap = new HashMap<String, Integer>();
hashMap.put(matcher.group(1),
replyContent.indexOf(matcher.group(1)));
mapList.add(hashMap);
}
for (HashMap<String, Integer> map : mapList) {
Set<?> set = map.keySet();
Iterator<?> iter = set.iterator();
while (iter.hasNext()) {
String key = (String) iter.next();
int index = map.get(key);
sp.setSpan(textViewClickable(mContext, key), index - 1,
(index + key.length()),
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
sp.setSpan(
new TextAppearanceSpan(
"DEFAULT_BOLD",
android.graphics.Typeface.NORMAL,
0,
ColorStateList.valueOf(Color.rgb(255, 122, 15)),
ColorStateList.valueOf(Color.rgb(255, 122, 15))),
index - 1, (index + key.length()),
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
}
}
// sp.setSpan(new UnderlineSpan(), 2, 5,
// Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
// sp.setSpan(new ForegroundColorSpan(Color.rgb(255, 122, 15)), 2, 5,
// Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
return sp;
}
private static TextViewClickable textViewClickable(final Context mContext,
final String nickName) {
View.OnClickListener l = new View.OnClickListener() {
// 如下定义自己的动作
public void onClick(View v) {
new MineHttpRequest().requstQueryUserId(new IRequestCallback() {
@Override
public void requestCallback(int state, Object data) {
// TODO Auto-generated method stub
}
@Override
public void onRequestFailure(int typeCode, Object data) {
// TODO Auto-generated method stub
T.showShort(mContext, "用户不存在!");
}
@Override
public void OnRequestSuccess(int typeCode, Object data) {
// TODO Auto-generated method stub
QueryUserIdEntity entity = (QueryUserIdEntity) data;
Intent intent = new Intent();
intent.putExtra("userId",
String.valueOf(entity.getUserId()));
intent.putExtra("userName", entity.getNickname());
intent.setClass(mContext,
PersonalHomePageActivity.class);
mContext.startActivity(intent);
}
}, nickName, 0);
}
};
return new TextViewClickable(l);
}
/**
*LinkMovementMethod()里面有个OnKeyDown()事件函数,然后如果是点击的话会跳到action()里的click中.然后调用ClickableSpan.onClick(). 实现点击指定文字跳转 必须调用setMovementMethod(LinkMovementMethod.getInstance());
*
*/
Tv_information_content.setMovementMethod(LinkMovementMethod.getInstance());
private void addUrlSpan() {
SpannableString spanString = new SpannableString("超链接");
URLSpan span = new URLSpan("tel:0123456789");
spanString.setSpan(span, 0, 3, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
tv.append(spanString);
}
private void addBackColorSpan() {
SpannableString spanString = new SpannableString("文字背景颜色");
BackgroundColorSpan span = new BackgroundColorSpan(Color.YELLOW);
spanString.setSpan(span, 0, 3, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
tv.append(spanString);
}
private void addForeColorSpan() {
SpannableString spanString = new SpannableString("文字前景颜色");
ForegroundColorSpan span = new ForegroundColorSpan(Color.BLUE);
spanString.setSpan(span, 0, 3, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
tv.append(spanString);
}
private void addFontSpan() {
SpannableString spanString = new SpannableString("36号字体");
AbsoluteSizeSpan span = new AbsoluteSizeSpan(36);
spanString.setSpan(span, 0, 5, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
tv.append(spanString);
}
private void addStyleSpan() {
SpannableString spanString = new SpannableString("BIBI");
StyleSpan span = new StyleSpan(Typeface.BOLD_ITALIC);//加粗
spanString.setSpan(span, 0, 2, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
tv.append(spanString);
}
private void addStrikeSpan() {
SpannableString spanString = new SpannableString("删除线");
StrikethroughSpan span = new StrikethroughSpan();
spanString.setSpan(span, 0, 3, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
tv.append(spanString);
}
private void addUnderLineSpan() {
SpannableString spanString = new SpannableString("下划线");
UnderlineSpan span = new UnderlineSpan();
spanString.setSpan(span, 0, 3, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
tv.append(spanString);
}
//图片
private void addImageSpan() {
SpannableString spanString = new SpannableString(" ");
Drawable d = getResources().getDrawable(R.drawable.ic_launcher);
d.setBounds(0, 0, d.getIntrinsicWidth(), d.getIntrinsicHeight());
ImageSpan span = new ImageSpan(d, ImageSpan.ALIGN_BASELINE);
spanString.setSpan(span, 0, 1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
tv.append(spanString);
}
}