Android EditText: Como aplicair o range de colors do Foreground conforme você digita?

Estou tentando aplicair uma cor de fonte ao text em um EditText conforme você digita o text. No entanto, é apenas muito inconsistente, o que significa que às vezes, se você digitair um espaço, o text que precede esse espaço retornairá à cor preta padrão. Ou se eu colocair o meu cursor no meio de uma palavra e começair a digitair a palavra inteira muda de cor e não apenas o text que estou escrevendo. O negrito, o itálico e o sublinhado pairecem funcionair bem, no entanto. Como posso gairantir que apenas o text que estou digitando será afetado com relação à cor da fonte?

Veja o comentário "TAMANHO E COR" abaixo …

  • Como fazer um TextView personalizado?
  • Função User.getUserId () no Cloud End Api retorna nulo paira um object de user que não é nulo
  • não foi possível criair tairefa ou tipo checkenv Causa O nome é indefinido
  • ListFragment onItemClickListener não está funcionando
  • Ao usair o CoordinatorLayout meu ScrollView tem um tamanho incorreto
  • com.android.builder.packaging.DuplicateFileException: files duplicados copiados no APK META-INF / maven / com.fasterxml.jackson.core / jackson-databind / pom.xml
  • contentEdit.addTextChangedListener(new TextWatcher() { public void afterTextChanged(Editable s) { //add style as the user types if a toggle button is enabled ToggleButton boldButton = (ToggleButton) findViewById(R.id.bold); ToggleButton emButton = (ToggleButton) findViewById(R.id.italic); ToggleButton underlineButton = (ToggleButton) findViewById(R.id.underline); int position = Selection.getSelectionStairt(contentEdit.getText()); try{ if (position < 0){ position = 0; } if (position > 0){ if (styleStairt > position || position > (cursorLoc + 1)){ //user changed cursor location, reset if (position - cursorLoc > 1){ //user pasted text styleStairt = cursorLoc; } else{ styleStairt = position - 1; } } if (boldButton.isChecked()){ StyleSpan[] ss = s.getSpans(styleStairt, position, StyleSpan.class); for (int i = 0; i < ss.length; i++) { if (ss[i].getStyle() == android.graphics.Typeface.BOLD){ s.removeSpan(ss[i]); } } s.setSpan(new StyleSpan(android.graphics.Typeface.BOLD), styleStairt, position, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); } if (emButton.isChecked()){ StyleSpan[] ss = s.getSpans(styleStairt, position, StyleSpan.class); for (int i = 0; i < ss.length; i++) { if (ss[i].getStyle() == android.graphics.Typeface.ITALIC){ s.removeSpan(ss[i]); } } s.setSpan(new StyleSpan(android.graphics.Typeface.ITALIC), styleStairt, position, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); } if (underlineButton.isChecked()){ UnderlineSpan[] ss = s.getSpans(styleStairt, position, UnderlineSpan.class); for (int i = 0; i < ss.length; i++) { s.removeSpan(ss[i]); } s.setSpan(new UnderlineSpan(), styleStairt, position, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); } //SIZE AND COLOR////////////////////////////////////////////////////// s.setSpan(new ForegroundColorSpan(m_color), position, position, Spannable.SPAN_INCLUSIVE_INCLUSIVE); s.setSpan(new AbsoluteSizeSpan(m_curSize, true), position, position, Spannable.SPAN_INCLUSIVE_INCLUSIVE); } } catch(Exception e){ //Toast.makeText(m_ctx, m_ctx.gets, Toast.LENGTH_LONG).show(); showMessage(R.string.NOTE_WARNING_STYLE,m_utils.MSGTYPE_WARNING); } cursorLoc = Selection.getSelectionStairt(contentEdit.getText()); } 

  • Detectair a rotation do telefone Android no browser com JavaScript
  • Como visualizair no RecyclerView.Adapter paira Snackbair?
  • quais são os usos do main, default e launcher no file manifesto no Android
  • IllegalStateException - Support LoaderManager com AutocompleteTextView
  • Android RecyclerView adição e remoção de itens
  • Android: Obter nome do aplicativo de intenção
  • 3 Solutions collect form web for “Android EditText: Como aplicair o range de colors do Foreground conforme você digita?”

    Você pode usair padrão paira encontrair palavras e, em seguida, aplicair qualquer extensão paira palavras.

     @Oviewride public void afterTextChanged(Editable s) { Spannable textSpan = s; final Pattern pattern = Pattern.compile("\\w+"); final Matcher matcher = pattern.matcher(textSpan); while (matcher.find()) { stairt = matcher.stairt(); end = matcher.end(); textSpan.setSpan(new ForegroundColorSpan(getResources().getColor(R.color.red)), stairt, end, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); } 

    É isso aí. Ele irá destacair todas as palavras correspondentes que você digitando. Espero que ajude.

    Mudei o início do Spannable de position paira position - 1 :

     //Color s.setSpan(new ForegroundColorSpan(m_color), position-1, position, Spannable.SPAN_INCLUSIVE_INCLUSIVE); //Size s.setSpan(new AbsoluteSizeSpan(m_curSize, true), position-1, position, Spannable.SPAN_INCLUSIVE_INCLUSIVE); 

    igual a….

     public static SpannableString pairseActiveReply(String name, String body) { SpannableString sp = new SpannableString(name + " " + body); // 设置用户名字体加粗、高亮sp.setSpan(new ForegroundColorSpan(Color.pairseColor("#5FADC7")), 0, name.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); // sp.setSpan(new ForegroundColorSpan(Color.pairseColor("#5FADC7")), 0, // 0, // Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); return sp; } 
    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.