0

私はAndroidアプリケーションに取り組んでいます。

次に、ユーザーからの入力をEditTextに取り込みます。最後の終止符の後のテキストを黒色で表示し、最後の終止符の前のテキストを赤色で表示したい。

たとえば、ユーザーがEditTextに以下の文を入力した場合:

'my name is john.I am from India.I Love Android'

「IloveAndroid」を黒で、文の最初の部分を赤で表示したいと思います。

それを行う方法はありますか?

4

2 に答える 2

3

SpannableStringテキストに属性を適用するために使用します。ここであなたが読みたいかもしれないブログエントリ:http://www.chrisumbel.com/article/android_textview_rich_text_spannablestring

于 2012-09-11T11:28:17.720 に答える
1

次の方法でテキストの変更を聞きます。

    editText.addTextChangedListener(new TextWatcher() { 
        public void afterTextChanged(Editable s) { 
            if (!colorHasSet) {
                makeColorText();
            }
            colorHasSet = false;
        }
        public void beforeTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {}
        public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {}
    });   

次に、WebnetMobileがリンクしているチュートリアルを使用して、テキストを色付けする関数を宣言します。

public void makeColorText() {
     SpannableString ss = new SpannableString(textEdit.getText());
    // customize ss here
    // ...
    colorHasSet = true;
    editText.setText(ss);
}

colorHasSetstackOverflowExceptionを防ぐために、フラグブール変数を定義する必要があります。

これは、インスタントカラーテキストを備えた完全なWYSIWYGエディターではありません。完全でニーズに合うように、いくつかのハックを実行する必要があります。これは、自分で行う必要があります。

于 2012-09-11T12:05:08.757 に答える