open class SpannableString : CharSequence, GetChars, Spannable

This is the class for text whose content is immutable but to which markup objects can be attached and detached. For mutable text, see SpannableStringBuilder.

Summary

Public constructors

For the backward compatibility reasons, this constructor copies all spans including android.text.NoCopySpan.

Public methods
open Boolean

equals(other: Any?)

Indicates whether some other object is "equal to" this one.

Char

get(i: Int)

Unit

getChars(start: Int, end: Int, dest: CharArray!, off: Int)

open Int

getSpanEnd(what: Any!)

open Int

getSpanFlags(what: Any!)

open Int

getSpanStart(what: Any!)

open Array<T>!

getSpans(queryStart: Int, queryEnd: Int, kind: Class<T>!)

open Int

hashCode()

Returns a hash code value for the object.

open Int

nextSpanTransition(start: Int, limit: Int, kind: Class<Any!>!)

open Unit

removeSpan(what: Any!)

Remove the specified object from the range of text to which it was attached, if any.

open Unit

setSpan(what: Any!, start: Int, end: Int, flags: Int)

Attach the specified markup object to the range start…end of the text, or move the object to that range if it was already attached elsewhere.

CharSequence

subSequence(startIndex: Int, endIndex: Int)

Returns a CharSequence that is a subsequence of this sequence.

String

toString()

Returns a string representation of the object.

open static SpannableString!
Properties
Int

Public constructors

Public methods

equals

open fun equals(other: Any?): Boolean

Indicates whether some other object is "equal to" this one.

The equals method implements an equivalence relation on non-null object references:

  • It is reflexive: for any non-null reference value x, x.equals(x) should return true.
  • It is symmetric: for any non-null reference values x and y, x.equals(y) should return true if and only if y.equals(x) returns true.
  • It is transitive: for any non-null reference values x, y, and z, if x.equals(y) returns true and y.equals(z) returns true, then x.equals(z) should return true.
  • It is consistent: for any non-null reference values x and y, multiple invocations of x.equals(y) consistently return true or consistently return false, provided no information used in equals comparisons on the objects is modified.
  • For any non-null reference value x, x.equals(null) should return false.

An equivalence relation partitions the elements it operates on into equivalence classes; all the members of an equivalence class are equal to each other. Members of an equivalence class are substitutable for each other, at least for some purposes.

Parameters
obj the reference object with which to compare.
o This value may be null.
Return
Boolean true if this object is the same as the obj argument; false otherwise.

get

fun get(i: Int): Char
Parameters
index the index of the char value to be returned
Return
Char the specified char value
Exceptions
java.lang.IndexOutOfBoundsException if the index argument is negative or not less than length()

getSpanEnd

open fun getSpanEnd(what: Any!): Int

getSpanFlags

open fun getSpanFlags(what: Any!): Int

getSpanStart

open fun getSpanStart(what: Any!): Int

getSpans

open fun <T : Any!> getSpans(
    queryStart: Int,
    queryEnd: Int,
    kind: Class<T>!
): Array<T>!

hashCode

open fun hashCode(): Int

Returns a hash code value for the object. This method is supported for the benefit of hash tables such as those provided by java.util.HashMap.

The general contract of hashCode is:

  • Whenever it is invoked on the same object more than once during an execution of a Java application, the hashCode method must consistently return the same integer, provided no information used in equals comparisons on the object is modified. This integer need not remain consistent from one execution of an application to another execution of the same application.
  • If two objects are equal according to the equals method, then calling the hashCode method on each of the two objects must produce the same integer result.
  • It is not required that if two objects are unequal according to the equals method, then calling the hashCode method on each of the two objects must produce distinct integer results. However, the programmer should be aware that producing distinct integer results for unequal objects may improve the performance of hash tables.
Return
Int a hash code value for this object.

nextSpanTransition

open fun nextSpanTransition(
    start: Int,
    limit: Int,
    kind: Class<Any!>!
): Int

removeSpan

open fun removeSpan(what: Any!): Unit

Remove the specified object from the range of text to which it was attached, if any. It is OK to remove an object that was never attached in the first place.

subSequence

fun subSequence(
    startIndex: Int,
    endIndex: Int
): CharSequence

Returns a CharSequence that is a subsequence of this sequence. The subsequence starts with the char value at the specified index and ends with the char value at index end - 1. The length (in chars) of the returned sequence is end - start, so if start == end then an empty sequence is returned.

Parameters
start the start index, inclusive
end the end index, exclusive
Return
CharSequence the specified subsequence
Exceptions
java.lang.IndexOutOfBoundsException if start or end are negative, if end is greater than length(), or if start is greater than end

toString

fun toString(): String

Returns a string representation of the object.

Return
String a string consisting of exactly this sequence of characters

Properties

length

val length: Int
Return
Int the number of chars in this sequence

Content and code samples on this page are subject to the licenses described in the Content License. Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.

Last updated 2026-02-13 UTC.