Android Editable

本文介绍了Android中Editable接口的用途,重点讲解了replace、insert、delete和append等方法的功能和应用场景。Editable是用于可编辑文本的接口,常在EditText和TextView中使用。通过replace方法进行文本替换,insert用于插入文本,delete实现删除操作,而append则用于追加文本。此外,还提到了Editable的其他方法如clear、clearSpans和过滤器设置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简单记一下,以前没怎么用过。

EditText View的getText直接返回的就是 Editable

而 TextView则是getEditableText才返回 Editable。

还有就是注释所说,

* Replaces the specified range (<code>st&hellip;en</code>) of text in this
* Editable with a copy of the slice <code>start&hellip;end</code> from
* <code>source</code>.  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.

replace 在 没有选中内容时 表现为 insert操作,

replace/insert 的String 参数 不能为空.


android.text
接口 Editable

所有超级接口:
Appendable, CharSequence, GetChars, Spannable, Spanned
所有已知实现类:
SpannableStringBuilder

public interface Editable
   
    extends CharSequence, GetChars, Spannable, Appendable
   

This is the interface for text whose content and markup can be changed (as opposed to immutable text like Strings). If you make a DynamicLayout of an Editable, the layout will be reflowed as the text is changed.


嵌套类摘要
static classEditable.Factory
          Factory used by TextView to create new Editables.
 
字段摘要
 
从接口 android.text.Spanned 继承的字段
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
 
方法摘要
 Editableappend(char text)
          Convenience for append(String.valueOf(text)).
 Editableappend(CharSequence text)
          Convenience for replace(length(), length(), text, 0, text.length())
 Editableappend(CharSequence text, int start, int end)
          Convenience for replace(length(), length(), text, start, end)
 voidclear()
          Convenience for replace(0, length(), "", 0, 0)
 voidclearSpans()
          Removes all spans from the Editable, as if by calling Spannable.removeSpan(java.lang.Object) on each of them.
 Editabledelete(int st, int en)
          Convenience for replace(st, en, "", 0, 0)
 InputFilter[]getFilters()
          Returns the array of input filters that are currently applied to changes to this Editable.
 Editableinsert(int where, CharSequence text)
          Convenience for replace(where, where, text, 0, text.length());
 Editableinsert(int where, CharSequence text, int start, int end)
          Convenience for replace(where, where, text, start, end)
 Editablereplace(int st, int en, CharSequence text)
          Convenience for replace(st, en, text, 0, text.length())
 Editablereplace(int st, int en, CharSequence source, int start, int end)
          Replaces the specified range (st…en) of text in this Editable with a copy of the slice start…end from source.
 voidsetFilters(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.
 
从接口 android.text.GetChars 继承的方法
getChars
 
从接口 android.text.Spannable 继承的方法
removeSpan, setSpan
 
从接口 android.text.Spanned 继承的方法
getSpanEnd, getSpanFlags, getSpans, getSpanStart, nextSpanTransition
 
从接口 java.lang.CharSequence 继承的方法
charAt, length, subSequence, toString
 

方法详细信息

replace

Editable replace(int st,
                 int en,
                 CharSequence source,
                 int start,
                 int end)
Replaces the specified range ( 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 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. As a special case, the cursor position is preserved even when the entire range where it is located is replaced.

返回:
a reference to this object.

replace

Editable replace(int st,
                 int en,
                 CharSequence text)
Convenience for replace(st, en, text, 0, text.length())

另请参见:
replace(int, int, CharSequence, int, int)

insert

Editable insert(int where,
                CharSequence text,
                int start,
                int end)
Convenience for replace(where, where, text, start, end)

另请参见:
replace(int, int, CharSequence, int, int)

insert

Editable insert(int where,
                CharSequence text)
Convenience for replace(where, where, text, 0, text.length());

另请参见:
replace(int, int, CharSequence, int, int)

delete

Editable delete(int st,
                int en)
Convenience for replace(st, en, "", 0, 0)

另请参见:
replace(int, int, CharSequence, int, int)

append

Editable append(CharSequence text)
Convenience for replace(length(), length(), text, 0, text.length())

指定者:
接口 Appendable 中的 append
参数:
text - the character sequence to append.
返回:
this Appendable.
另请参见:
replace(int, int, CharSequence, int, int)

append

Editable append(CharSequence text,
                int start,
                int end)
Convenience for replace(length(), length(), text, start, end)

指定者:
接口 Appendable 中的 append
参数:
text - the character sequence to append.
start - the first index of the subsequence of csq that is appended.
end - the last index of the subsequence of csq that is appended.
返回:
this Appendable.
另请参见:
replace(int, int, CharSequence, int, int)

append

Editable append(char text)
Convenience for append(String.valueOf(text)).

指定者:
接口 Appendable 中的 append
参数:
text - the character to append.
返回:
this Appendable.
另请参见:
replace(int, int, CharSequence, int, int)

clear

void clear()
Convenience for replace(0, length(), "", 0, 0)

另请参见:
Note that this clears the text, not the spans; use {@link #clearSpans} if you need that.

clearSpans

void clearSpans()
Removes all spans from the Editable, as if by calling Spannable.removeSpan(java.lang.Object) on each of them.


setFilters

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.


getFilters

InputFilter[] getFilters()
Returns the array of input filters that are currently appliedto changes to this Editable.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值