1

分かっ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( http://i.imgur.com/aRIgm.pngを参照)、ユーザーが下線付きの半透明のテキストとして入力しなかったため、これはHtml.toHtml好ましくありません。<p>abcd <u><font color ="#78000000">test</font></u></p>

HTML表現もファイナライズされたときにコールバックはありますか?

4

1 に答える 1

0

次のコードを使用してテキストから構成マークアップを削除したため、下線と透明度がなくなりました。

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);
        }
    }
}
于 2012-10-31T08:35:52.843 に答える