部分参考:https://blog.csdn.net/mq2553299/article/details/78033581
原理什么的就不说了,我也不知道。用法就是下面的两个方法。
// 推荐使用这个方法
private void showAppend(@NonNull View view) {
TextView tvAppend = view.findViewById(R.id.tv_append);
// ##### start
final SpannableStringBuilder full = new SpannableStringBuilder();
String text = "{ 中间的部分,中间的部分 }";
String head = "{"thx"}";
String tail = "{ 尾巴,尾巴 }";
String clickText1 = "张三";
String clickText2 = "吃瓜";
final SpannableStringBuilder before = new SpannableStringBuilder();
final SpannableStringBuilder after = new SpannableStringBuilder();
before.append(clickText1);
before.setSpan(new ClickableSpan() {
@Override
public void onClick(@NonNull View widget) {
ToastHelper.show(widget.getContext(), widget.toString() + " before");
}
@Override
public void updateDrawState(@NonNull TextPaint ds) {
//super.updateDrawState(ds); --> 注释掉,就没有下划线了
}
}, 0, before.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); // 1. click
before.setSpan(new ForegroundColorSpan(Color.RED), 0, before.length(),
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); // 2. color
after.append(clickText2);
after.setSpan(new ClickableSpan() {
@Override
public void onClick(@NonNull View widget) {
ToastHelper.show(widget.getContext(), widget.toString() + " after");
}
@Override
public void updateDrawState(@NonNull TextPaint ds) {
//super.updateDrawState(ds);
}
}, 0, after.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); // 1. click
after.setSpan(new ForegroundColorSpan(Color.RED), 0, after.length(),
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); // 2. color
full.append(head).append(before).append(text).append(after).append(tail);
// ##### end
tvAppend.setMovementMethod(LinkMovementMethod.getInstance());
tvAppend.append(full);
}
// 不 推荐使用这个方法
private void showSet(@NonNull View view) {
TextView tv = view.findViewById(R.id.tv_content);
final SpannableStringBuilder style = new SpannableStringBuilder();
// 设置文字
style.append("张飞的眩晕效果很好,但是比不上姜子牙...");
style.setSpan(new ClickableSpan() {
@Override
public void onClick(@NonNull View widget) {
ToastHelper.show(widget.getContext(), "111...");
}
@Override
public void updateDrawState(@NonNull TextPaint ds) {
//super.updateDrawState(ds); // super 里面会添加下划线
}
}, 0, 2, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); // 1. 设置 "张飞"的点击事件
style.setSpan(new ForegroundColorSpan(Color.BLUE), 0, 2,
Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); // 2. 设置 "张飞"的颜色
// 设置部分文字点击事件
final ClickableSpan clickableSpan = new ClickableSpan() {
@Override
public void onClick(@NonNull View widget) {
ToastHelper.show(widget.getContext(),"333");
}
@Override
public void updateDrawState(@NonNull TextPaint ds) {
//super.updateDrawState(ds);
}
};
style.setSpan(clickableSpan, 4, 6, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
tv.setText(style);
// 设置部分文字颜色
ForegroundColorSpan foregroundColorSpan =
new ForegroundColorSpan(Color.parseColor("#FF0000"));
style.setSpan(foregroundColorSpan, 4, 6, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
//配置给TextView
tv.setMovementMethod(LinkMovementMethod.getInstance());
tv.setText(style);
}
最后
以上就是唠叨钢铁侠最近收集整理的关于android textview 部分文字变色以及可点击的全部内容,更多相关android内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复