prefacio
Otra serie para mi
SpannableString
Los 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 Span
requiere la vista de texto modificada setMovementMethod(LinkMovementMehtod.getInstance())
, de lo contrario, el evento de clic no se enviará al párrafo modificado; ClickableSpan
el texto estará subrayado de forma predeterminada, si no desea tener un subrayado, debe updateDrawState
ponersetUnderlineText(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
INCLUSIVE
yEXCLUSIVE
.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