设置一段文字中某些特定的文字可点击,且文字颜色变色

/**
     * 设置具体某个关键字可点击
     * 
     * @param textView
     * @param spannableString
     * @param pattern
     * @param clickableSpan
     */
    public static void setKeyworkClickable(Context context, TextView textView, SpannableString spannableString, Pattern pattern,
	    ClickableSpan clickableSpan) {
	Matcher matcher = pattern.matcher(spannableString.toString());
	while (matcher.find()) {
	    String key = matcher.group();
	    if (!"".equals(key)) {
		int start = spannableString.toString().indexOf(key);
		int end = start + key.length();
		setClickTextView(context, textView, spannableString, start, end, clickableSpan);
	    }
	}
    }

    /**
     * 设置TextView中的字段可点击
     * 
     * @param textView
     * @param spannableString
     * @param start
     * @param end
     * @param clickableSpan
     */
    public static void setClickTextView(Context context, TextView textView, SpannableString spannableString, int start, int end,
	    ClickableSpan clickableSpan) {

	spannableString.setSpan(clickableSpan, start, end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);

	spannableString.setSpan(new ForegroundColorSpan(Color.parseColor("#5A7089")), start, end,
		Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
	textView.setHighlightColor(context.getResources().getColor(R.color.book_list_category_name_text_selector));
	textView.setText(spannableString);
	textView.setMovementMethod(LinkMovementMethod.getInstance());
    }

通过实现setKeyWordClickable()方法来实现某段文字可点击。

具体使用方法可以参考如下:

SpannableString spannableString = new SpannableString(mCustomStr);
		    /**
		     * 设置替换掉的文字 高亮显示 且支持跳转
		     */
		    AppUtils.setKeyworkClickable(mContext, holder.mCustomStr, spannableString, Pattern.compile("#\\w+#"),
			    new TextViewClickSpan(new OnTextViewClickListener() {

				@Override
				public void setStyle(TextPaint ds) {
                                // 设置是否显示超链接的下划线
				    ds.setUnderlineText(false);
				}

				@Override
				public void clickTextView() {
				    if (isHasClick()) {
					return;
				    }

				    Intent intent = new Intent(mContext, TypeListActivity.class);
				    intent.putExtra(CATEGORY_ID, orderBean.getCategoryId());
				    intent.putExtra(CATEGORY_NAME, orderBean.getCategoryName());
				    mContext.startActivity(intent);
				}

			    }));


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值