当文本更改其HTML表示时,EditText回调是什么



我知道addTextChangedListener,但不好。

我使用EditText作为简单的文本编辑器,用户可以编辑粗体,斜体,下划线,文本颜色。我将用户输入Html.toHtml(...)

输入文本

问题:

public class AndroidTestActivity extends Activity implements TextWatcher {
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        EditText editText = new EditText(this);
        editText.addTextChangedListener(this);
        setContentView(editText);
    }
    public void afterTextChanged(Editable s) {
        Log.e("", ""+Html.toHtml(s));
    }
    public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
    public void onTextChanged(CharSequence s, int start, int before, int count) {}    
}

用户输入abcd test(请参阅https://i.stack.imgur.com/61dlu.png), Html.toHtml将为 <p>abcd <u><font color ="#78000000">test</font></u></p>,这不好,因为用户没有将其输入它,因为用户没有按照下半式的半透明的方式输入它文字。

当html表示也被敲定时是否有回调?

我使用以下代码从文本中删除编写标记,因此现在没有下划线和透明度:

public void afterTextChanged(Editable s) {
    SpannableStringBuilder s2 = new SpannableStringBuilder(s);
    removeComposingSpans(s2);
    Log.e("", ""+Html.toHtml(s2));
}
public static void removeComposingSpans(Spannable s) {
    Object[] spans = s.getSpans(0, s.length(), Object.class);
    for (Object object : spans) {
        int flags = s.getSpanFlags(object);
        if ((flags & Spannable.SPAN_COMPOSING) > 0) {
            s.removeSpan(object);
        }
    }
}

最新更新