Uso básico de AndroidUI SpannableString

prefacio

Otra serie para mi

SpannableStringLos caracteres especificados se pueden modificar sobre la base de la secuencia de caracteres. En el proceso de desarrollo diario, TextView se puede modificar, como agregar una palabra o una oración en un texto completo, negrita, evento de clic, color, subrayado, etc.

SpannableString

código principal

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

what

Este parámetro se usa para establecer el Span usado para modificar

comúnSpan

ForegroundColorSpan

Utilizado para establecer el color de primer plano, también se puede entender como colorear el texto. El valor del color debe ser ColorInt, y se puede obtener usando Color.parseColor(color:String)uno o ResourseCompt.getColor(resoures:Resourse,id:Int,theme:Int)ambos métodosColorInt

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

BackgroundColorSpan

Como su nombre lo indica, se usa para establecer el color de fondo, que también debe pasarse ColorInt, no una instancia.

ClickableSpan

Haz clic en Retocar. Nota: Agregar esto Spanrequiere la vista de texto modificada setMovementMethod(LinkMovementMehtod.getInstance()), de lo contrario, el evento de clic no se enviará al párrafo modificado; ClickableSpanel texto estará subrayado de forma predeterminada, si no desea tener un subrayado, debe updateDrawStateponersetUnderlineText(false)

  • ejemplo
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)
复制代码

EstiloSpan

Se utiliza para establecer el estilo del texto, como cursiva, negrita. hay que pasarTypeface

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;
复制代码
  • ejemplo
val ss = SpannableString("1234")
val bold = StyleSpan(Typeface.BOLD);
ss.setSpan(bold,2,ss.size(),Spanned.SPAN_INCLUSIVE_EXCLUSIVE)
textview.setText(ss)
复制代码

Agregue otros tramos en el uso posterior....

flags

Explique INCLUSIVEy EXCLUSIVE. INCLUSIVE* (incluido) es equivalente a un intervalo cerrado [], EXCLUSIVE(elección única, exclusiva) es equivalente a un intervalo abierto (), por lo que la comprensión puede seleccionar fácilmente el correspondienteflag

  • SPAN_INCLUSIVE_EXCLUSIVE: incluye el subíndice inicial, pero no el subíndice final
  • SPAN_EXCLUSIVE_INCLUSIVE: no incluye subíndice inicial, pero incluye subíndice final
  • SPAN_INCLUSIVE_INCLUSIVE: incluye subíndices de inicio y final
  • SPAN_EXCLUSIVE_EXCLUSIVE: No incluye subíndices de inicio ni subíndices de finalización

Supongo que te gusta

Origin juejin.im/post/7083321961157230622
Recomendado
Clasificación