我工作的一個Android應用程序。的EditText多色
現在我想從拿用戶輸入一個EditText。 我希望在上次完全停止之前以黑色顯示文本,在上次完全停止之前顯示紅色文本。
例如,如果用戶鍵入下面句子中的EditText:
'my name is john.I am from India.I Love Android'
我想顯示在紅色句子的黑色和第一部分「我愛的Android」。
有沒有辦法做到這一點?
我工作的一個Android應用程序。的EditText多色
現在我想從拿用戶輸入一個EditText。 我希望在上次完全停止之前以黑色顯示文本,在上次完全停止之前顯示紅色文本。
例如,如果用戶鍵入下面句子中的EditText:
'my name is john.I am from India.I Love Android'
我想顯示在紅色句子的黑色和第一部分「我愛的Android」。
有沒有辦法做到這一點?
聽取文本的變化:
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編輯器即時彩色文本,你應該做一些處理,使之完整,適合您的需求,這是留給自己來完成。
使用SpannableString
將屬性應用到您的文本。這裏可能需要閱讀博客條目:http://www.chrisumbel.com/article/android_textview_rich_text_spannablestring。
K..thank u..let我試試.. :) – sarath
editText.setText(ss); ..將再次調用addtextchangelistener所以結果將是一個無限循環 – sarath
@sarath是的,你是對的。我添加了布爾標誌colorHasSet來防止無限循環。因此,任何改變文本將導致只有一次推出afterTextChanged的'()' – yrajabi