2013-03-18 2 views
2

Как переделать определенные слова, которые пользователь выбирает в EditText. Например, у меня есть один EditText, в котором пользователь вводит предложение «Привет, как вы?», Теперь Пользователь может выбирать слова Like this Image. И я должен отображать выбранные слова как выделенные во всем предложении TextView.Highlite конкретные слова в EditText android

Я уже обращаю внимание this, и this но непонятно. Пожалуйста, помогите мне.

ответ

0

Использование HTML как это:

Spanned s = Html.fromHtml(string.replace(selectedString, "<font color=\"red\">" + selectedString + "</font>")); 

edittext.text(s); 
+0

как я знаю selectedString о пользователе? –

+0

int startSelection = et.getSelectionStart(); int endSelection = et.getSelectionEnd(); Строка selectedString = string.substring (startSelection, endSelection); Вы можете непосредственно: ул = "FONT COLOR = \" RED \ ">" + yourString «; textDisplayedBottom.setText (Html.fromHtml (ул)); –

1

Вы можете сделать это с помощью замены() метод, то Html.fromHtml(), как показано ниже

yourEditText.setOnFocusChangedListener(new OnFocusChangedListener(){ 
    @Override 
    public void onFocusChange(View v, boolean hasFocus){ 
     if (hasFocus){ 
      if (str.contains("Hello how are you ?") == true) 
       {      
        str = ((EditText)v)getText.ToString().replaceAll("Hello how are you ?", "<font color='red'>Hello how are you ?</font>"); 

        ((EditText)v).setText(Html.fromHtml(str), TextView.BufferType.SPANNABLE); 
       } 
     } 
    } 
}); 

[Edit 1]

yourEditText.setOnFocusChangedListener(new OnFocusChangedListener(){ 
     @Override 
     public void onFocusChange(View v, boolean hasFocus){ 
      if (hasFocus){ 
      // But the words in an ArrayList then use them 
      for(String s : arrLst){ 
      if (str.contains(s) == true)      {      
      str = ((EditText)v)getText.ToString().replaceAll(s, "<font  color='red'>Hello how are you ?</font>"); 
       ((EditText)v).setText(Html.fromHtml(str), TextView.BufferType.SPANNABLE);          } 

      } 
      } 
     } 
    }); 

[Редактировать 2]

yourEditText.setOnFocusChangedListener(new OnFocusChangedListener(){ 
     @Override 
     public void onFocusChange(View v, boolean hasFocus){ 
      if (hasFocus){ 

       int sSelection = ((EditText)v)getText.ToString().getSelectionStart(); 
       int eSelection = ((EditText)v)getText.ToString().getSelectionEnd(); 
       String sString = string.substring(sSelection, eSelection); 

       str = ((EditText)v)getText.ToString().replaceAll(sString , "<font color='red'>"+sString +"</font>"); 
       ((EditText)v).setText(Html.fromHtml(str), TextView.BufferType.SPANNABLE); 

      } 
     } 
    }); 
+0

HII спасибо за ответ Что ул и s2. в этом коде? –

+0

s2 может быть любым словом, например «Привет, как дела?» вы решите его, какое слово вы хотите изменить, вы можете использовать как s2. Я отредактировал свой ответ – Talha

+0

Но слово не исправить, пользователь может выбрать слова, которые он/она хочет использовать. –

1

Попытайтесь помочь.

"android:textColorHighlight="#00f000" 
+1

благодарит за ответ. но я не хочу выделить целую строку. Только определенная строка, которую пользователь выбирает в edittext. –

+0

Я уже использую это, это не для целых строк его только для выбранного слова – Prashant09

+0

Ok bro, позвольте мне проверить его. –

1

Вы можете добиться того, что с помощью spannable

взглянуть на EditText есть апи получить выбор: Selection in EditText

и вы можете установить многоцветной текст в TextView используя SpannableString

поэтому комбинируя их как в виде кода:

edit.setOnEditorActionListener(
    new EditText.OnEditorActionListener() { 
@Override 
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { 
if (actionId == EditorInfo.IME_ACTION_SEARCH || 
     actionId == EditorInfo.IME_ACTION_DONE || 
     event.getAction() == KeyEvent.ACTION_DOWN && 
     event.getKeyCode() == KeyEvent.KEYCODE_ENTER) { 
    if (!event.isShiftPressed()) { 
     // the user is done typing. 
//edit is the EditText 
     Spannable spann = new SpannableString(edit.getText());   
     spann.setSpan(new ForegroundColorSpan(Color.BLUE), edit.getSelectionStart(),  edit.getSelectionEnd(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 
    textView.setText(spann); // TextView 
     return true; // consume. 
    }     
} 
return false; // pass on to other listeners. 
} 
}); 

должен дать вам эффект, который вы хотите

код обнаружения редактирования конца здесь: SO Answer

+0

привет спасибо за ответ ... Когда я ввожу текст в edittext, выберите текст и нажмите ok, чтобы не отображать выбранную строку. Плз помоги мне. –

Смежные вопросы