public class SpannableStringBuilder extends Object implements CharSequence, GetChars, Spannable, Editable, Appendable, GraphicsOperations
Editable.Factory
SPAN_COMPOSING, SPAN_EXCLUSIVE_EXCLUSIVE, SPAN_EXCLUSIVE_INCLUSIVE, SPAN_INCLUSIVE_EXCLUSIVE, SPAN_INCLUSIVE_INCLUSIVE, SPAN_INTERMEDIATE, SPAN_MARK_MARK, SPAN_MARK_POINT, SPAN_PARAGRAPH, SPAN_POINT_MARK, SPAN_POINT_MARK_MASK, SPAN_POINT_POINT, SPAN_PRIORITY, SPAN_PRIORITY_SHIFT, SPAN_USER, SPAN_USER_SHIFT
Constructor and Description |
---|
SpannableStringBuilder()
Create a new SpannableStringBuilder with empty contents
|
SpannableStringBuilder(CharSequence text)
Create a new SpannableStringBuilder containing a copy of the
specified text, including its spans if any.
|
SpannableStringBuilder(CharSequence text,
int start,
int end)
Create a new SpannableStringBuilder containing a copy of the
specified slice of the specified text, including its spans if any.
|
Modifier and Type | Method and Description |
---|---|
SpannableStringBuilder |
append(char text)
Convenience for append(String.valueOf(text)).
|
SpannableStringBuilder |
append(CharSequence text)
Convenience for replace(length(), length(), text, 0, text.length())
|
SpannableStringBuilder |
append(CharSequence text,
int start,
int end)
Convenience for replace(length(), length(), text, start, end)
|
SpannableStringBuilder |
append(CharSequence text,
Object what,
int flags)
Appends the character sequence
text and spans what over the appended part. |
char |
charAt(int where)
Return the char at the specified offset within the buffer.
|
void |
clear()
Convenience for replace(0, length(), "", 0, 0)
|
void |
clearSpans()
Removes all spans from the Editable, as if by calling
Spannable.removeSpan(java.lang.Object) on each of them. |
SpannableStringBuilder |
delete(int start,
int end)
Convenience for replace(st, en, "", 0, 0)
|
void |
drawText(Canvas c,
int start,
int end,
float x,
float y,
Paint p)
Don't call this yourself -- exists for Canvas to use internally.
|
void |
drawTextRun(Canvas c,
int start,
int end,
int contextStart,
int contextEnd,
float x,
float y,
boolean isRtl,
Paint p)
Don't call this yourself -- exists for Canvas to use internally.
|
boolean |
equals(Object o)
Indicates whether some other object is "equal to" this one.
|
void |
getChars(int start,
int end,
char[] dest,
int destoff)
Copy the specified range of chars from this buffer into the
specified array, beginning at the specified offset.
|
InputFilter[] |
getFilters()
Returns the array of input filters that are currently applied
to changes to this Editable.
|
int |
getSpanEnd(Object what)
Return the buffer offset of the end of the specified
markup object, or -1 if it is not attached to this buffer.
|
int |
getSpanFlags(Object what)
Return the flags of the end of the specified
markup object, or 0 if it is not attached to this buffer.
|
<T> T[] |
getSpans(int queryStart,
int queryEnd,
Class<T> kind)
Return an array of the spans of the specified type that overlap
the specified range of the buffer.
|
<T> T[] |
getSpans(int queryStart,
int queryEnd,
Class<T> kind,
boolean sort)
Return an array of the spans of the specified type that overlap
the specified range of the buffer.
|
int |
getSpanStart(Object what)
Return the buffer offset of the beginning of the specified
markup object, or -1 if it is not attached to this buffer.
|
float |
getTextRunAdvances(int start,
int end,
int contextStart,
int contextEnd,
boolean isRtl,
float[] advances,
int advancesPos,
Paint p)
Don't call this yourself -- exists for Paint to use internally.
|
int |
getTextRunCursor(int contextStart,
int contextEnd,
int dir,
int offset,
int cursorOpt,
Paint p)
Deprecated.
This is an internal method, refrain from using it in your code
|
int |
getTextWatcherDepth()
Returns the depth of TextWatcher callbacks.
|
int |
getTextWidths(int start,
int end,
float[] widths,
Paint p)
Don't call this yourself -- exists for Paint to use internally.
|
int |
hashCode()
Returns a hash code value for the object.
|
SpannableStringBuilder |
insert(int where,
CharSequence tb)
Convenience for replace(where, where, text, 0, text.length());
|
SpannableStringBuilder |
insert(int where,
CharSequence tb,
int start,
int end)
Convenience for replace(where, where, text, start, end)
|
int |
length()
Return the number of chars in the buffer.
|
float |
measureText(int start,
int end,
Paint p)
Don't call this yourself -- exists for Paint to use internally.
|
int |
nextSpanTransition(int start,
int limit,
Class kind)
Return the next offset after
start but less than or
equal to limit where a span of the specified type
begins or ends. |
void |
removeSpan(Object what)
Remove the specified markup object from the buffer.
|
SpannableStringBuilder |
replace(int start,
int end,
CharSequence tb)
Convenience for replace(st, en, text, 0, text.length())
|
SpannableStringBuilder |
replace(int start,
int end,
CharSequence tb,
int tbstart,
int tbend)
Replaces the specified range (
st…en ) of text in this
Editable with a copy of the slice start…end from
source . |
void |
setFilters(InputFilter[] filters)
Sets the series of filters that will be called in succession
whenever the text of this Editable is changed, each of which has
the opportunity to limit or transform the text that is being inserted.
|
void |
setSpan(Object what,
int start,
int end,
int flags)
Mark the specified range of text with the specified object.
|
CharSequence |
subSequence(int start,
int end)
Return a new CharSequence containing a copy of the specified
range of this buffer, including the overlapping spans.
|
String |
substring(int start,
int end)
Return a String containing a copy of the chars in this buffer, limited to the
[start, end[ range.
|
String |
toString()
Return a String containing a copy of the chars in this buffer.
|
static SpannableStringBuilder |
valueOf(CharSequence source) |
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
chars, codePoints
public SpannableStringBuilder()
public SpannableStringBuilder(CharSequence text)
public SpannableStringBuilder(CharSequence text, int start, int end)
public static SpannableStringBuilder valueOf(CharSequence source)
public char charAt(int where)
charAt
in interface CharSequence
where
- the index of the char
value to be returnedchar
valuepublic int length()
length
in interface CharSequence
char
s in this sequencepublic SpannableStringBuilder insert(int where, CharSequence tb, int start, int end)
Editable
insert
in interface Editable
Editable.replace(int, int, CharSequence, int, int)
public SpannableStringBuilder insert(int where, CharSequence tb)
Editable
insert
in interface Editable
Editable.replace(int, int, CharSequence, int, int)
public SpannableStringBuilder delete(int start, int end)
Editable
delete
in interface Editable
Editable.replace(int, int, CharSequence, int, int)
public void clear()
Editable
clear
in interface Editable
Note that this clears the text, not the spans;
use {@link #clearSpans} if you need that.
public void clearSpans()
Editable
Spannable.removeSpan(java.lang.Object)
on each of them.clearSpans
in interface Editable
public SpannableStringBuilder append(CharSequence text)
Editable
append
in interface Editable
append
in interface Appendable
text
- The character sequence to append. If csq is
null, then the four characters "null" are
appended to this Appendable.Editable.replace(int, int, CharSequence, int, int)
public SpannableStringBuilder append(CharSequence text, Object what, int flags)
text
and spans what
over the appended part.
See Spanned
for an explanation of what the flags mean.text
- the character sequence to append.what
- the object to be spanned over the appended text.flags
- see Spanned
.SpannableStringBuilder
.public SpannableStringBuilder append(CharSequence text, int start, int end)
Editable
append
in interface Editable
append
in interface Appendable
text
- The character sequence from which a subsequence will be
appended. If csq is null, then characters
will be appended as if csq contained the four
characters "null".start
- The index of the first character in the subsequenceend
- The index of the character following the last character in the
subsequenceEditable.replace(int, int, CharSequence, int, int)
public SpannableStringBuilder append(char text)
Editable
append
in interface Editable
append
in interface Appendable
text
- The character to appendEditable.replace(int, int, CharSequence, int, int)
public SpannableStringBuilder replace(int start, int end, CharSequence tb)
Editable
replace
in interface Editable
Editable.replace(int, int, CharSequence, int, int)
public SpannableStringBuilder replace(int start, int end, CharSequence tb, int tbstart, int tbend)
Editable
st…en
) of text in this
Editable with a copy of the slice start…end
from
source
. The destination slice may be empty, in which case
the operation is an insertion, or the source slice may be empty,
in which case the operation is a deletion.
Before the change is committed, each filter that was set with
Editable.setFilters(android.text.InputFilter[])
is given the opportunity to modify the
source
text.
If source
is Spanned, the spans from it are preserved into the Editable.
Existing spans within the Editable that entirely cover the replaced
range are retained, but any that were strictly within the range
that was replaced are removed. If the source
contains a span
with Spanned.SPAN_PARAGRAPH
flag, and it does not satisfy the
paragraph boundary constraint, it is not retained. As a special case, the
cursor position is preserved even when the entire range where it is located
is replaced.
replace
in interface Editable
Spanned.SPAN_PARAGRAPH
public void setSpan(Object what, int start, int end, int flags)
public void removeSpan(Object what)
removeSpan
in interface Spannable
public int getSpanStart(Object what)
getSpanStart
in interface Spanned
public int getSpanEnd(Object what)
getSpanEnd
in interface Spanned
public int getSpanFlags(Object what)
getSpanFlags
in interface Spanned
public <T> T[] getSpans(int queryStart, int queryEnd, Class<T> kind)
public <T> T[] getSpans(int queryStart, int queryEnd, Class<T> kind, boolean sort)
T
- queryStart
- Start index.queryEnd
- End index.kind
- Class type to search for.sort
- If true the results are sorted by the insertion order.public int nextSpanTransition(int start, int limit, Class kind)
start
but less than or
equal to limit
where a span of the specified type
begins or ends.nextSpanTransition
in interface Spanned
public CharSequence subSequence(int start, int end)
subSequence
in interface CharSequence
start
- the start index, inclusiveend
- the end index, exclusivepublic void getChars(int start, int end, char[] dest, int destoff)
public String toString()
toString
in interface CharSequence
toString
in class Object
public String substring(int start, int end)
public int getTextWatcherDepth()
public void drawText(Canvas c, int start, int end, float x, float y, Paint p)
drawText
in interface GraphicsOperations
public void drawTextRun(Canvas c, int start, int end, int contextStart, int contextEnd, float x, float y, boolean isRtl, Paint p)
drawTextRun
in interface GraphicsOperations
public float measureText(int start, int end, Paint p)
measureText
in interface GraphicsOperations
public int getTextWidths(int start, int end, float[] widths, Paint p)
getTextWidths
in interface GraphicsOperations
public float getTextRunAdvances(int start, int end, int contextStart, int contextEnd, boolean isRtl, float[] advances, int advancesPos, Paint p)
getTextRunAdvances
in interface GraphicsOperations
@Deprecated public int getTextRunCursor(int contextStart, int contextEnd, int dir, int offset, int cursorOpt, Paint p)
The context is the shaping context for cursor movement, generally the bounds of the metric
span enclosing the cursor in the direction of movement.
contextStart
, contextEnd
and offset
are relative to
the start of the string.
If cursorOpt is CURSOR_AT and the offset is not a valid cursor position, this returns -1. Otherwise this will never return a value before contextStart or after contextEnd.
getTextRunCursor
in interface GraphicsOperations
contextStart
- the start index of the contextcontextEnd
- the (non-inclusive) end index of the contextdir
- either DIRECTION_RTL or DIRECTION_LTRoffset
- the cursor position to move fromcursorOpt
- how to move the cursor, one of CURSOR_AFTER,
CURSOR_AT_OR_AFTER, CURSOR_BEFORE,
CURSOR_AT_OR_BEFORE, or CURSOR_ATp
- the Paint object that is requesting this informationpublic void setFilters(InputFilter[] filters)
Editable
setFilters
in interface Editable
public InputFilter[] getFilters()
Editable
getFilters
in interface Editable
public boolean equals(Object o)
Object
The equals
method implements an equivalence relation
on non-null object references:
x
, x.equals(x)
should return
true
.
x
and y
, x.equals(y)
should return true
if and only if
y.equals(x)
returns true
.
x
, y
, and z
, if
x.equals(y)
returns true
and
y.equals(z)
returns true
, then
x.equals(z)
should return true
.
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.
x
,
x.equals(null)
should return false
.
The equals
method for class Object
implements
the most discriminating possible equivalence relation on objects;
that is, for any non-null reference values x
and
y
, this method returns true
if and only
if x
and y
refer to the same object
(x == y
has the value true
).
Note that it is generally necessary to override the hashCode
method whenever this method is overridden, so as to maintain the
general contract for the hashCode
method, which states
that equal objects must have equal hash codes.
equals
in class Object
o
- the reference object with which to compare.true
if this object is the same as the obj
argument; false
otherwise.Object.hashCode()
,
HashMap
public int hashCode()
Object
HashMap
.
The general contract of hashCode
is:
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.
equals(Object)
method, then calling the hashCode
method on each of
the two objects must produce the same integer result.
Object.equals(java.lang.Object)
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.
As much as is reasonably practical, the hashCode method defined by
class Object
does return distinct integers for distinct
objects. (This is typically implemented by converting the internal
address of the object into an integer, but this implementation
technique is not required by the
JavaTM programming language.)
hashCode
in class Object
Object.equals(java.lang.Object)
,
System.identityHashCode(java.lang.Object)