Android – Destacar una palabra en un TextView?
Tengo una database search query
que busca en la base de datos una palabra introducida por el usuario y devuelve un Cursor
.
En mi ListActivity
, tengo un ListView
que llevará a cabo los artículos (los artículos del cursor). El diseño de elementos ListView
es básicamente un TextView
. Quiero decir, el ListView
será una lista de TextView
.
- Fuentes personalizadas y texto personalizado en Android
- Animación de TextView: se desvanece, espera, se desvanece
- Android TextView ¿Qué hace eleganteTextHeight? (API 21)
- ¿Cómo comprobar si un EditText en Android tiene emoticon o no?
- Poner una vista de texto encima de un fragmento de lista
Lo que quiero es resaltar el search term
donde quiera que aparezca en TextView
. Me refiero a resaltar: color diferente o color de fondo diferente o cualquier cosa lo hace diferente que el resto del texto.
es posible? ¿y cómo?
Actualizar:
cursor = myDbHelper.search(term); //term: a word entered by the user. cursor.moveToFirst(); String[] columns = {cursor.getColumnName(1)}; int[] columnsLayouts = {R.id.item_title}; //item_title: the TextView holding the one raw ca = new SimpleCursorAdapter(this.getBaseContext(), R.layout.items_layout, cursor,columns , columnsLayouts); lv = getListView(); lv.setAdapter(ca);
Para @Shailendra: El método search()
devolverá algunos títulos. Quiero destacar las palabras en los títulos que coinciden con el term
palabra. Espero que esto esté claro ahora.
- Establecer el color de la extensión de TextView en Android
- Android: dibujar línea en una vista de texto
- ¿Establecer etiquetas para cada elemento en un ListView en Android?
- Cómo obtener el ancho de textView en android
- Cambiar el tamaño de los diferentes caracteres en la vista de texto, Android
- ¿Cómo evito completamente que TextView se desplace?
- Hipervínculo de TextView de Android
- ¿Cómo se cambia el texto a negrita en Android?
Inserte el código HTML para el color, luego establezca esto en su texto.
me gusta
origString = origString.replaceAll(textToHighlight,"<font color='red'>"+textToHighlight+"</font>"); Textview.setText(Html.fromHtml(origString));
TextView textView = (TextView)findViewById(R.id.mytextview01); //use a loop to change text color Spannable WordtoSpan = new SpannableString("partial colored text"); WordtoSpan.setSpan(new ForegroundColorSpan(Color.BLUE), 2, 4, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); textView.setText(WordtoSpan);
Los números 2 y 4 son índices de inicio / parada para el color del texto, en este ejemplo "rti" sería coloreado.
Así que básicamente sólo encontrar el índice inicial de su palabra de búsqueda en el título:
int startIndex = titleText.indexOf(term); int stopIndex = startIndex + term.length();
Y luego reemplazar los números 2 y 4 con los índices y "texto de color parcial" con su cadena de título.
No lo he hecho pero esto parece prometedor:
http://developer.android.com/reference/android/text/SpannableString.html http://developer.android.com/guide/topics/resources/string-resource.html
Public final void setText (CharSequence text)
Desde: API Nivel 1 Establece el valor de cadena de la TextView. TextView no acepta el formato HTML, que puede hacer con cadenas de texto en archivos de recursos XML. Para diseñar sus cadenas, asigne los objetos android.text.style. * A SpannableString o vea la documentación Tipos de recursos disponibles para ver un ejemplo de configuración de texto con formato en el archivo de recursos XML.
http://developer.android.com/reference/android/widget/TextView.html
- ¿Dónde puedo encontrar el código fuente del complemento de herramientas de desarrollo de Android (ADT) para Eclipse IDE?
- ¿Qué es una Clase de Contrato y cómo se usa