2010-01-22 14 views
19

¿Es posible resaltar texto en TextView o WebView?Resaltar texto en TextView o WebView

veo que es posible en un EditText

Highligh text in a EditText

me gustaría hacer lo mismo en TextView o WebView.
¿Eso es posible?

+0

Consulte esto también http://stackoverflow.com/questions/6309093/how-to-allow-the-user-to-select-a-text-range- in-a-textview-similar-to-edittext – hassanadnan

+0

posible duplicado de [¿Es posible tener varios estilos dentro de un TextView?] (http://stackoverflow.com/questions/1529068/is-it-possible-to-have -multiple-styles-inside-a-textview) – blahdiblah

+0

¿Cuál es la manera de hacerlo en una vista web? – AnupamChugh

Respuesta

56

habilite el almacenamiento de TexView Spannable! por defecto El almacenamiento en Spandable en EditText es verdadero.

por lo

TextView myTV = (TextView)findViewById(R.id.textView1); 
String textString = "StackOverFlow Rocks!!!"; 
Spannable spanText = Spannable.Factory.getInstance().newSpannable(textString); 
spanText.setSpan(new BackgroundColorSpan(0xFFFFFF00), 14, 19, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 
myTV.setText(spanText); 
+3

Gracias, funciona bien. Pero creo que cree un texto extensible por: Spannable spanText = Spannable.Factory.getInstance(). NewSpannable (textString); es mejor que textView.setText() y textView.getText(). – VAdaihiep

+0

¿Hay alguna manera de crear una vista de texto justificada y luego establecer múltiples tramos en ella? –

+0

+ l para 'StackOverFlow Rocks !!!' –

0

En realidad, usted no tiene que desarrollar esta función por sí mismo. Solo necesita usar EditText en lugar de TextView, mientras configura el android: editable de EditText en falso.

Mi respuesta está aquí, espero que le puede ayudar a:

https://stackoverflow.com/a/11026292/966405

1

Como bien se podría utilizar esta solución para una WebView. Llaman findAllAsync

webview.findAllAsync(((EditText) findViewById(R.id.edit)).getText().toString()); 

que añadir a FindListenerWebView

webview.setFindListener(new FindListener() { 

     @Override 
     public void onFindResultReceived(int activeMatchOrdinal, int numberOfMatches, boolean isDoneCounting) { 
      Toast.makeText(getApplicationContext(), "Matches: " + numberOfMatches, Toast.LENGTH_LONG).show(); 
     } 
    }); 

Iterar en consecuencia con webview.findNext(false); donde verdadero/falso muestra la dirección.

Pero esta solución se agregó en API level 16 !!! En lugar de que pueda configurar JavaScript para alta - http://www.nsftools.com/misc/SearchAndHighlight.htm

Cuestiones relacionadas