Posso select un colore per each row di text che appendono a un TextView?

Ho un TextView da utilizzare come console di connessione Bluetooth. Quando invio un command, voglio che sia scritto in un colore (per esempio ciano) e le risposte ricevute in un colore diverso (ad esempio rosso).

È ansible farlo e se è così, come?

  • Scrivi i dati della logica android a un file
  • Android: scheda evidenziata di TabWidget non leggibile su HTC Sense
  • Convertire l'elenco in matrix in Java
  • Come generare il codice di referral utilizzando le metriche Branch.io?
  • Come convertire un integer colore in una string esagonale in Android?
  • scivolando tra immagini android
  • Ho letto che potrebbe essere ansible utilizzare HTML, ma non sono certo che sia l'approccio migliore, o anche come farlo.

    4 Solutions collect form web for “Posso select un colore per each row di text che appendono a un TextView?”

    Hai davvero bisogno di essere un TextView o puoi utilizzare invece un ListView e aggiungere una nuova row nell'elenco per each command / risposta?

    Se vuoi veramente utilizzare un TextView, puoi fare qualcosa di simile (questo è un esempio di lavoro che puoi copiare e incollare alla tua app per provare):

    package com.c0deattack; import android.app.Activity; import android.graphics.Color; import android.os.Bundle; import android.text.Spannable; import android.text.style.ForegroundColorSpan; import android.widget.LinearLayout; import android.widget.TextView; public class MultipleColoursInOneTextViewActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); TextView tv = new TextView(this); String command = "This is a command"; String response = "\nThis is a response"; tv.append(command + response); Spannable spannableText = (Spannable) tv.getText(); spannableText.setSpan(new ForegroundColorSpan(Color.GREEN), 0, command.length(), 0); spannableText.setSpan(new ForegroundColorSpan(Color.RED), command.length(), command.length() + response.length(), 0); LinearLayout layout = new LinearLayout(this); layout.addView(tv); setContentView(layout); } } 

    In modo da dimostrare che può essere fatto, ma noterai che dovrai impostare le interruzioni di rottura e l'allenamento in cui each command / risposta inizia e finisce in modo da poter applicare il colore corretto. Non è così difficile, ma per me, si sente agitata.

    Ecco una piccola function di helper basata sulla risposta di C0deAttack, che semplifica le cose

     public static void appendColoredText(TextView tv, String text, int color) { int start = tv.getText().length(); tv.append(text); int end = tv.getText().length(); Spannable spannableText = (Spannable) tv.getText(); spannableText.setSpan(new ForegroundColorSpan(color), start, end, 0); } 

    Basta sostituire qualsiasi chiamata

     textView.append("Text") 

    con

     appendColoredText(textView, "Text", Color.RED); 

    È più facile se si utilizza:

     textView.append(Html.fromHtml("<font color='#FFFFFF'</font>")); 

    controllare per each stato textView.setTextColor (Color.RED);

    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.