2012-09-11 59 views
0

我工作的一個Android應用程序。的EditText多色

現在我想從拿用戶輸入一個EditText。 我希望在上次完全停止之前以黑色顯示文本,在上次完全停止之前顯示紅色文本。

例如,如果用戶鍵入下面句子中的EditText:

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

我想顯示在紅色句子的黑色和第一部分「我愛的Android」。

有沒有辦法做到這一點?

回答

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); 
} 

flag布爾變量colorHasSet應該被定義爲防止stackOverflowException。

這是不是一個完整的WYSIWYG編輯器即時彩色文本,你應該做一些處理,使之完整,適合您的需求,這是留給自己來完成。

+0

K..thank u..let我試試.. :) – sarath

+0

editText.setText(ss); ..將再次調用addtextchangelistener所以結果將是一個無限循環 – sarath

+0

@sarath是的,你是對的。我添加了布爾標誌colorHasSet來防止無限循環。因此,任何改變文本將導致只有一次推出afterTextChanged的'()' – yrajabi

3

使用SpannableString將屬性應用到您的文本。這裏可能需要閱讀博客條目:http://www.chrisumbel.com/article/android_textview_rich_text_spannablestring

+0

我不想的setText。在用戶進入測試時,必須發生。可以有些聽衆可以做到這一點我不知道.. – sarath

+0

所以你想所見即所得?沒那麼簡單 - 沒有像這樣的內置編輯器。最簡單的方法是爲用戶輸入提供'EditText',併爲樣式化預覽分開'TextView'。 ( –

+0

但我必須這樣做.. :( – sarath