web-dev-qa-db-fra.com

Surligner du texte dans TextView ou WebView

Est-il possible de surligner du texte dans une variable TextView ou WebView?

Je vois que c'est possible dans une EditText

Surligner du texte dans un EditText

J'aimerais faire la même chose dans TextView ou WebView.
C'est possible?

20
Alexi

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

alors

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);
59
Elenasys

Vous pouvez également utiliser cette solution pour 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 dans le résultat avec webview.findNext(false); où false/true indique la direction.

Mais cette solution a été ajoutée dans API level 16 !!! Au lieu de cela, vous pouvez configurer JavaScript pour higlihting - http://www.nsftools.com/misc/SearchAndHighlight.htm

0
validcat