在 Android 中将 Spannable 用于完整的 EditText

Using Spannable for full EditText in Android

我有一个 EditText 视图,用于让用户输入文本。在某些字符之后,我想减小 EditText 中文本的字体大小。我正在使用 TextWatcher's onTextChanged 侦听器来跟踪用户输入和字符的长度。这部分按预期工作。但是要设置文本的字体大小,我使用以下方法:

final Spannable span = new SpannableString(editText.getText());
span.setSpan(new RelativeSizeSpan(0.9f), 0, string.length), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
editText.setText(span);

现在,我面临两个问题:

  1. 当前文本大小已根据需要更改,但如果用户在当前文本前面输入新文本,则新文本的大小与所需的更新文本字体大小不同,但与原始文本相同EditText 文本字体大小。

For eg., if the current text is "ABC" and then the font size of this text is updated then if a user enters "123" in front of "ABC" like "123ABC" the size of 123 is not the same as updated text size but is the same as the original font size but the "ABC" continues to remain the updated desired font size.

  1. EditText 的光标总是移动到开头。我希望光标位置与更新文本大小之前的位置相同。

如有任何帮助,我们将不胜感激。

谢谢。

检查这个Truss.java,易于实施并且可以解决我们面临的与 SpannableString

相关的许多问题