Estoy desarrollando una aplicación en la que habrá una pantalla de búsqueda donde el usuario puede buscar palabras clave específicas y esa palabra clave debe estar resaltada. He encontrado el método Html.fromHtml.
Pero me gustaría saber si es la forma correcta de hacerlo o no.
Por favor déjeme saber su opinión al respecto.
Respuestas:
O mucho más simple que tratar con
Spannable
los mensajes de correo electrónico manualmente, ya que no dijo que deseaba resaltar el fondo, solo el texto:String styledText = "This is <font color='red'>simple</font>."; textView.setText(Html.fromHtml(styledText), TextView.BufferType.SPANNABLE);
fuente
<span style="color:#ff0000;">
para que Android no cambie el color.Usando el valor de color del recurso xml:
int labelColor = getResources().getColor(R.color.label_color); String сolorString = String.format("%X", labelColor).substring(2); // !!strip alpha value!! Html.fromHtml(String.format("<font color=\"#%s\">text</font>", сolorString), TextView.BufferType.SPANNABLE);
fuente
Esto se puede lograr utilizando una cadena extensible. Deberá importar lo siguiente
import android.text.SpannableString; import android.text.style.BackgroundColorSpan; import android.text.style.StyleSpan;
Y luego puede cambiar el fondo del texto usando algo como lo siguiente:
TextView text = (TextView) findViewById(R.id.text_login); text.setText(""); text.append("Add all your funky text in here"); Spannable sText = (Spannable) text.getText(); sText.setSpan(new BackgroundColorSpan(Color.RED), 1, 4, 0);
Donde esto resaltará los personajes en la posición 1 - 4 con un color rojo. ¡Espero que esto ayude!
fuente
String name = modelOrderList.get(position).getName(); //get name from List String text = "<font color='#000000'>" + name + "</font>"; //set Black color of name /* check API version, according to version call method of Html class */ if (android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.N) { Log.d(TAG, "onBindViewHolder: if"); holder.textViewName.setText(context.getString(R.string._5687982) + " "); holder.textViewName.append(Html.fromHtml(text)); } else { Log.d(TAG, "onBindViewHolder: else"); holder.textViewName.setText("123456" + " "); //set text holder.textViewName.append(Html.fromHtml(text, Html.FROM_HTML_MODE_LEGACY)); //append text into textView }
fuente
Solución alternativa: usar WebView en su lugar. Html es fácil de trabajar.
WebView webview = new WebView(this); String summary = "<html><body>Sorry, <span style=\"background: red;\">Madonna</span> gave no results</body></html>"; webview.loadData(summary, "text/html", "utf-8");
fuente
la fuente está en desuso, use span en su lugar
Html.fromHtml("<span style=color:red>"+content+"</span>")
fuente
Para hacer parte de su texto subrayado y coloreado
en tu strings.xml
<string name="text_with_colored_underline">put the text here and <u><font color="#your_hexa_color">the underlined colored part here<font><u></string>
luego en la actividad
yourTextView.setText(Html.fromHtml(getString(R.string.text_with_colored_underline)));
y para enlaces en los que se puede hacer clic:
<string name="text_with_link"><![CDATA[<p>text before link<a href=\"http://www.google.com\">title of link</a>.<p>]]></string>
y en tu actividad:
yourTextView.setText(Html.fromHtml(getString(R.string.text_with_link))); yourTextView.setMovementMethod(LinkMovementMethod.getInstance());
fuente
textview.setText(Html.fromHtml("<font color='rgb'>"+text contain+"</font>"));
Le dará el color exactamente lo que ha hecho en el editor html, simplemente configure la vista de texto y concatézcala con el valor de vista de texto. Android no es compatible con el color del intervalo, cámbielo a color de fuente en el editor y estará listo para comenzar.
fuente
Primero convierta su cadena en HTML y luego conviértala en spannable. haga lo que sugiere los siguientes códigos.
Spannable spannable = new SpannableString(Html.fromHtml(labelText)); spannable.setSpan(new ForegroundColorSpan(Color.parseColor(color)), spannable.toString().indexOf("•"), spannable.toString().lastIndexOf("•") + 1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
fuente