TextView自定义省略号、部分文字变色、部分文字点击
2016-08-29 09:34
459 查看
1、如果文本内容超过最大行数,在两个字符串拼接处添加省略号省略代码:
2、部分文字变颜色:
3、部分文字可点击:
ViewTreeObserver observer = textView.getViewTreeObserver(); observer.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { @Override public void onGlobalLayout() { ViewTreeObserver obs = textView.getViewTreeObserver(); obs.removeGlobalOnLayoutListener(this); if (textView.getLineCount() > maxLine) {//判断行数大于多少时改变 int lineEndIndex = textView.getLayout().getLineEnd(maxLine - 1); //设置第maxLine行打省略号 String subStr = str.substring(str.lastIndexOf(strFlag)); Log.i("subStr", subStr); String text = textView.getText().subSequence(0, lineEndIndex - subStr.length()) + "..." + subStr; textView.setText(text); } } }); }
2、部分文字变颜色:
String str = "小明回复小红:"; int firstStartIndex = 0; int firstBendIndex = str.indexOf("回复"); int secondStartIndex = str.indexOf("回复") + "回复".length(); int secondBendIndex = str.indexOf(":"); SpannableStringBuilder style = new SpannableStringBuilder(str); style.setSpan(new BackgroundColorSpan(Color.BLACK), firstStartIndex, firstBendIndex, Spannable.SPAN_EXCLUSIVE_INCLUSIVE); style.setSpan(new ForegroundColorSpan(Color.BLUE), firstStartIndex, firstBendIndex, Spannable.SPAN_EXCLUSIVE_INCLUSIVE); style.setSpan(new ForegroundColorSpan(Color.RED), secondStartIndex, secondBendIndex, Spannable.SPAN_EXCLUSIVE_INCLUSIVE); text_view.setText(style);
3、部分文字可点击:
String str = "小明回复小红:"; int firstStartIndex = 0; int firstBendIndex = str.indexOf("回复"); int secondStartIndex = str.indexOf("回复") + "回复".length(); int secondBendIndex = str.indexOf(":"); SpannableString spannableString = new SpannableString(str); spannableString.setSpan(new MyClickableSpan(new OnTextViewClickListener() { @Override public void setTextClick() { Toast.makeText(MainActivity.this, "小明", Toast.LENGTH_SHORT).show(); } }), firstStartIndex, firstBendIndex, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); spannableString.setSpan(new MyClickableSpan(new OnTextViewClickListener() { @Override public void setTextClick() { Toast.makeText(MainActivity.this, "小红", Toast.LENGTH_SHORT).show(); } }), secondStartIndex, secondBendIndex, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); //设置点击文字后的文字背景色为透明 text_view.setHighlightColor(getResources().getColor(android.R.color.transparent)); text_view.setMovementMethod(LinkMovementMethod.getInstance()); text_view.setText(spannableString);
public interface OnTextViewClickListener { void setTextClick(); } private class MyClickableSpan extends ClickableSpan { private OnTextViewClickListener onTextViewClickListener; public MyClickableSpan(OnTextViewClickListener onTextViewClickListener) { this.onTextViewClickListener = onTextViewClickListener; } @Override public void updateDrawState(TextPaint ds) { //super.updateDrawState(ds); //ds.setColor()设定的是span超链接的文本颜色,而不是点击后的颜色,点击后的背景颜色(HighLightColor)属于TextView的属性,Android4.0以上默认是淡绿色,低版本的是黄色。 ds.setColor(Color.BLUE); } @Override public void onClick(View widget) { onTextViewClickListener.setTextClick(); } }
相关文章推荐
- Android TextView 部分文字变色添加点击事件
- 给TextView中的部分文字变色和添加点击
- TextView技巧,例如:实现部分文字变色和可点击
- TextView中的部分文字自定义颜色和点击事件(类似新浪微博带颜色的可点击字体)
- Android TextView 嵌套图片及其点击,TextView 部分文字点击,文字多颜色
- android textview 部分文字点击事件
- android textview可以设置文字颜色 部分文字点击事件处理
- Android文字局部变色 TextView文字部分变色代码
- android TextView 实现自定义文字点击效果
- Android中为TextView中的部分文字设置颜色和点击事件
- 自定义圆角点击变色TextView
- android Textview 实现展开收缩功能+部分文字点击 (SpannableString)
- 浅谈ClickableSpan , 实现TextView文本某一部分文字的点击响应
- 名词解释功能:TextView 给部分文字加下划线并实现点击事件
- 浅谈ClickableSpan , 实现TextView文本某一部分文字的点击响应
- Android 自定义textview 部分文字字体颜色高亮
- TextView中的部分文字响应点击事件
- android 为TextView的部分文字设置超链接样式并监听点击事件
- 设置TextView部分文字下划线并响应点击事件(SpannableString)
- 浅谈ClickableSpan , 实现TextView文本某一部分文字的点击响应