android之TextView部分本文变颜色,并设置文本监听器

时间:2023-02-11 10:28:04

android之TextView部分本文变颜色,并设置文本监听器

android之TextView部分本文变颜色,并设置文本监听器


二:这个是可可扩展类:

package com.wangzhi.view;

import android.text.SpannableString;
import android.text.Spanned;
import android.text.TextPaint;
import android.text.method.LinkMovementMethod;
import android.text.style.ClickableSpan;
import android.view.View;
import android.widget.TextView;

import com.wangzhi.mallLib.MaMaHelp.utils.Tools;

/***
* 字体颜色变色,点击颜色跳转
*
* @author zhongwr
* @update 2015年12月23日 下午2:52:41
*/
public class TextViewClickableSpan extends ClickableSpan {

/** 变颜色的字体内容 **/
private String content;
/** 监听view回调 */
private OnViewClickListener onClickListener;
/** 字体颜色 */
private int textViewColor = -1;

public TextViewClickableSpan(String content) {
super();
this.content = content;
}

public TextViewClickableSpan(String content, int textViewColor) {
this(content);
this.textViewColor = textViewColor;
}

public TextViewClickableSpan(String content, OnViewClickListener onClickListener) {
this(content);
this.onClickListener = onClickListener;
}

public TextViewClickableSpan(String content, int textViewColor, OnViewClickListener onClickListener) {
this(content, textViewColor);
this.onClickListener = onClickListener;
}

/***
*
* @description 追加可点击,变色的文本内容
* @author zhongwr
* @params textView 追加在这个textView后边
* @update 2015年12月23日 下午3:22:00
*/
public void append(TextView textView) {
if (!Tools.isEmpty(content) && null != textView) {
SpannableString spanttt = new SpannableString(content);
spanttt.setSpan(this, 0, content.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
textView.append(content);
textView.setMovementMethod(LinkMovementMethod.getInstance());
}
}

/**
* 字体颜色
*/
@Override
public void updateDrawState(TextPaint ds) {
if (-1 != textViewColor) {
ds.setColor(textViewColor);
}
}

@Override
public void onClick(View widget) {
if (null != onClickListener) {
onClickListener.onClick(widget);
}
}

public interface OnViewClickListener {
public void onClick(View view);
}
}