2013-05-24 12 views
5

Desidero che la mia applicazione Android abbia l'evidenziazione del testo all'interno di WebView. Simile alla funzionalità trovata nel libro di Google Play. Qualcuno ha un'idea su come raggiungerlo?Evidenzia funzionalità di testo come Google Play Book

Sto usando un WebView perché il mio contenuto è in formato html.

fondamentalmente parlando di questo effetto:

enter image description here

+0

yaa. stavo parlando di questo .. Per sicurezza –

+0

vuoi evidenziare il testo mentre selezioni o quando? – deadfish

+0

durante la selezione. sto usando la visualizzazione Web ora perché il mio contenuto è in formato html. ma non è possibile ottenerlo sulla web view. qualsiasi altra opzione –

risposta

0

La selezione blu che vedete è parte dell'ambiente Android standard quando si seleziona il testo. In modo che dovrebbe funzionare sulla tua webview standard senza bisogno di alcun codice personalizzato. => Non sono più convinto che sia vero. Sembra che non lo sia.

La selezione verde (gialla, arancione, rossa, ...) è tuttavia personalizzata.

Si potrebbe leggere il testo selezionato dal vostro evento di selezione e utilizzare tali informazioni per aggiornare il contenuto HTML, avvolgere il testo in un arco con un set di colori di sfondo.

L'approccio alternativo utilizza javascript e abilita javascript nella tua webview. Non sono sicuro, tuttavia, su come farlo.

Alcune fonti per verificare la presenza di questo approccio sono https://github.com/btate/BTAndroidWebViewSelection e Android: How to select text from WebView, and highlight it onclick

selezione testo da WebView dettagli

Per ottenere la selezione del testo di lavoro su un WebView è possibile utilizzare il seguente frammento (from this question). Attivalo premendo un pulsante (o un altro evento) dal menu (contesto).

private void emulateShiftHeld(WebView view) 
    { 
     try 
     { 
      KeyEvent shiftPressEvent = new KeyEvent(0, 0, KeyEvent.ACTION_DOWN, 
                KeyEvent.KEYCODE_SHIFT_LEFT, 0, 0); 
      shiftPressEvent.dispatch(view); 
      Toast.makeText(this, "select_text_now", Toast.LENGTH_SHORT).show(); 
     } 
     catch (Exception e) 
     { 
      Log.e("dd", "Exception in emulateShiftHeld()", e); 
     } 
    } 
+0

puoi essere più specifico sull'evento di selezione –

+0

Ho aggiornato la domanda con qualche dettaglio in più. Apparentemente non è predefinito come pensavo. Sembra che anche la selezione abbia bisogno di un codice personalizzato. Esempio aggiunto alla mia risposta originale. – hcpl

0

A partire dal livello di API 11, è possibile utilizzare TextView's textIsSelectable flag.


Edit: Anche se la questione è ora stato modificato per citare specificamente WebView, il commento di OP @ Suhail "il mio contenuto è in forma HTML" non squalificare completamente TextView come si può anche rendere alcuni HTML di base.

+0

come vedi questo combinato con la webview in questo caso d'uso? – hcpl

+0

La domanda @hcpl non specifica il contesto, ad es. 'WebView' o' TextView' – laalto

+0

infatti, aggiungerò una correzione per quello. È solo menzionato nei commenti della domanda che questo è per una visione web. – hcpl

0

Se si utilizza WebView Provare a integrare Mozilla PDF.JS in cui è possibile eseguire il rendering PDF. che può contenere anche immagini.

Problemi correlati