Android EditText:如何在编写时应用跨度?

时间:2014-10-07 17:58:12

标签: android android-edittext spannablestring spannable

如何在用户撰写时对EditText文本应用跨度?

例如,用户在编写时已激活“粗体”,因此从那时起每个字符输入应为粗体

我考虑过将文本更改侦听器添加到EditText并在用户编写时更新文本,但我想知道是否有更好的方法来执行此操作。

2 个答案:

答案 0 :(得分:0)

问题已在评论中得到解答,但为了使其更具永久性,我将添加更全面的答案。

为了在用户编写的任何地方设置范围(如Bold),您只需在光标(或选择)位置的文本上设置范围。

StyleSpan boldSpan = new StyleSpan(Typeface.BOLD);
int start = editText.getSelectionStart();
int end = editText.getSelectionEnd();
int flag = Spannable.SPAN_INCLUSIVE_INCLUSIVE;
editText.getText().setSpan(boldSpan, start, end, flag);

SPAN_INCLUSIVE_INCLUSIVE标记表示在跨度之前或之后添加的任何文本都将包含在范围中,即使添加范围时文本长度为0

另见

答案 1 :(得分:0)

您可以使用文本观察器,并在afterTextChanged()方法中将其设置为可编辑的范围,我目前正在编写富文本编辑器,这是我在样式中使用的方法,而且效果很好,但是到目前为止,我还无法设置需要诸如quoteSpan或bulletSpan之类的段落的跨度。

但是,如果您只想使用斜体或粗体等简单样式,则可以使用这种方法。