2010-01-22 8 views
19

Est-il possible de surligner le texte dans un TextView ou WebView?Mettez en surbrillance le texte dans TextView ou WebView

Je vois qu'il est possible dans un EditText

Highligh text in a EditText

Je voudrais faire la même chose dans TextView ou WebView.
Est-ce possible?

+0

Vérifiez cela aussi http://stackoverflow.com/questions/6309093/how-to-allow-the-user-to-select-a-text-range- in-a-textview-similar-to-edittext – hassanadnan

+0

duplication possible de [Est-il possible d'avoir plusieurs styles dans un TextView?] (http://stackoverflow.com/questions/1529068/is-it-possible-to-have -multiple-styles-inside-a-textview) – blahdiblah

+0

Quel est le moyen de le faire dans un webview? – AnupamChugh

Répondre

56

permettre le stockage Spannable de TextView! par défaut Le stockage spannable dans EditText est true.

si

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

Merci, c'est très bien. Mais je pense créer Spannable Text par: Spannable spanText = Spannable.Factory.getInstance(). NewSpannable (textString); est meilleur que textView.setText() et textView.getText(). – VAdaihiep

+0

Y a-t-il un moyen de créer une vue texte justifiée et de lui affecter plusieurs travées? –

+0

+ l pour 'StackOverFlow Rocks !!!' –

0

En fait, vous n'avez pas de développer cette fonctionnalité par vous-même. Vous avez juste besoin d'utiliser EditText au lieu de TextView, tandis que vous définissez android: editable de EditText sur false.

Ma réponse est ici, espérons que cela peut vous aider:

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

1

De plus, vous pouvez utiliser cette solution pour une WebView. Appelez findAllAsync

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

que d'ajouter FindListener à WebView

webview.setFindListener(new FindListener() { 

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

Itérer en résultat avec webview.findNext(false); où faux/vrai montre la direction. Mais cette solution a été ajoutée au API level 16 !!! Au lieu de vous pouvez configurer JavaScript pour higlihting - http://www.nsftools.com/misc/SearchAndHighlight.htm

Questions connexes