AndroidUI SpannableString基本使用

·  阅读 556

前言

又是给自己看系列

SpannableString可以在字符序列基础上对指定的字符进行修饰,在日常开发过程中可以对TextView进行修饰,如一段完整文字中,对当中的词或句添加,粗体、点击事件、颜色、下划线等等。

SpannableString

主要代码

SpannableString().setSpan(what:Object,start:Int,end:Int,flags:Int)
复制代码

what

此参数用来设置,用来修饰的Span

常用的Span

ForegroundColorSpan

用来设置前景色,也可以理解理解为,给文字上色。颜色值需要为ColorInt,可以使用Color.parseColor(color:String) 或者 ResourseCompt.getColor(resoures:Resourse,id:Int,theme:Int)两种方法获得ColorInt

val ss = SpannableString("一段文字")
ss.setSpan(ForegroundColorSpan(Color.parseColor("#000000")),2,ss.size(),Spanned.SPAN_EXCLUSIVE_EXCLUSIVE)
textview.setText(ss)
复制代码

BackgroundColorSpan

顾名思义,用来设置背景色,同样是需要传入ColorInt,不做实例了。

ClickableSpan

点击修饰。注意:添加此Span,需要被修饰的textview,setMovementMethod(LinkMovementMehtod.getInstance()),否则点击事件不会被下发到修饰的段落上;ClickableSpan默认会在文字上加上下划线,如果不希望有下划线需要在updateDrawStatesetUnderlineText(false)

val ss = SpannableString("一段文字")

val clickableSpan = object: ClickableSpan(){
	override fun onClick(weiget:View){
		// TODO 点击
	}
	override fun upadteDrawState(paint:TextPaint){
		paint.setUnderlineText(false)
	}
}

ss.setSpan(clickableSpan,2,ss.size(),Spanned.SPAN_EXCLUSIVE_EXCLUSIVE)
textview.setMovementMethod(LinkMovementMehtod.getInstance())
textview.setText(ss)
复制代码

StyleSpan

用来设置文字样式,如斜体、粗体。需要传入Typeface

Typeface
// 正常
public static final int NORMAL = 0;
// 粗体
public static final int BOLD = 1;
// 斜体
public static final int ITALIC = 2;
// 斜体 + 粗体
public static final int BOLD_ITALIC = 3;
复制代码
val ss = SpannableString("1234")
val bold = StyleSpan(Typeface.BOLD);
ss.setSpan(bold,2,ss.size(),Spanned.SPAN_INCLUSIVE_EXCLUSIVE)
textview.setText(ss)
复制代码

后续使用中添加其他Span....

flags

解释一下,INCLUSIVEEXCLUSIVEINCLUSIVE*(包括的)相当于闭区间[]EXCLUSIVE(单选、排它)相当于开区间(),如此理解可以方便选择对应的flag

  • SPAN_INCLUSIVE_EXCLUSIVE:包括开始下标,但不包括结束下标
  • SPAN_EXCLUSIVE_INCLUSIVE:不包括开始下标,但包括结束下标
  • SPAN_INCLUSIVE_INCLUSIVE:既包括开始下标,又包括结束下标
  • SPAN_EXCLUSIVE_EXCLUSIVE:不包括开始下标,也不包括结束下标
分类:
Android
标签:
收藏成功!
已添加到「」, 点击更改