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



当用户撰写时,如何在EditText文本上应用跨度?

例如,用户在作曲时激活了"bold",因此此后输入的每个字符都应该是bold

我想过在EditText中添加文本更改侦听器,并在用户编写时更新文本,但我想知道是否有更好的方法。

这个问题已经在评论中得到了回答,但为了让它更持久,我将添加一个更完整的答案

为了在用户创作的任何地方设置跨度(如粗体),只需在光标(或选择)位置的文本上设置一个跨度。

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

另请参见

  • 如何设置其他类型的跨度
  • 可生成标志的含义

您可以使用文本观察程序,并在afterTextChanged()方法中接收的可编辑中设置跨度,我目前正在编写一个富文本编辑器,这是我在样式中使用的方法,效果很好,但到目前为止,我还无法设置需要quoteSpan或bulletSpan等段落的跨度。

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

相关内容

  • 没有找到相关文章

最新更新