2012-04-02 12 views
5

Voglio fare varie parti del testo individualmente cliccabile per esempio nel testo che segue:Android cliccabile TextView Come fare più regioni Fare clic su Testo e prendere Regione Selezione

Prendi il tempo di oggi, un giorno, due giorni, sette giorno.

Desidero poter selezionare singolarmente tre diverse regioni del testo per ottenere un forcast di un giorno, due giorni o sette giorni. Non voglio che questo acceda a un URL di una pagina Web ma semplicemente catturi il clic sull'area del testo all'interno dell'attività che mostra il TextView.

+0

possibile duplicato (http://stackoverflow.com/questions/9584136/how-to-click-or-tap-on -a-TextView-text-on-diversi-words) – ForceMagic

risposta

12

Si dovrebbe essere in grado di farlo utilizzando ClickableSpan. Fondamentalmente è necessario creare un SpannableStringBuilder, aggiungere le parti di testo e impostare un ClickableSpan diverso per ciascuna parte di testo cliccabile.

SpannableStringBuilder sb = new SpannableStringBuilder(); 
String regularText = "This text is "; 
String clickableText = "clickable"; 
sb.append(regularText); 
sb.append(clickableText); 
sb.setSpan(new ClickableSpan(), sb.length()-clickableText.length(), sb.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 
TextView tv = ... 
tv.setText(sb); 

Questo è solo un esempio che illustra come impostare un singolo ClickableSpan. Ovviamente avrà più senso fare sopra in un ciclo e impostare un nuovo intervallo con ogni iterazione.

Tuttavia, dal momento che ClickableSpan è una classe astratta, prima è necessario estenderlo con la propria implementazione concreta. Più specificamente, il metodo onClick dovrà essere implementato per gestire gli eventi click.

Inoltre, non dimenticare di impostare un parametro MovementMethod su TextView, ad es. LinkMovementMethod: [? Come cliccare o toccare su un testo TextView su parole diverse]

tv.setMovementMethod(LinkMovementMethod.getInstance()); 
Problemi correlati