2012-04-02 17 views
5

Quiero hacer varias partes del texto de forma individual se puede hacer clic, por ejemplo, en el texto a continuación:Android con enlace Vista de Texto Cómo hacer varios clics Regiones sobre texto y coger Selección de la región

Obtener la predicción del tiempo, un día, dos días, los siete día.

Quiero poder hacer clic individualmente en tres regiones diferentes del texto para obtener un forcast de un día, dos o siete días. No quiero que esto pase a la URL de una página web, sino que simplemente haga clic en la región de texto dentro de la actividad que muestra TextView.

+0

posible duplicado de (http://stackoverflow.com/questions/9584136/how-to-click-or-tap-on -a-textview-text-on-different-words) – ForceMagic

Respuesta

12

Debería poder lograrlo usando ClickableSpan. Básicamente, debe crear un SpannableStringBuilder, agregar las partes de texto y establecer un ClickableSpan diferente para cada parte de texto que se puede hacer clic.

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

Esto es solo un ejemplo que ilustra cómo configurar un solo ClickableSpan. Obviamente, tendrá más sentido hacer lo anterior en un bucle y establecer un nuevo lapso con cada iteración.

Sin embargo, dado que ClickableSpan es una clase abstracta, primero deberá extenderla con su propia implementación concreta. Más específicamente, el método onClick deberá implementarse para manejar los eventos de clic.

Además, no olvides configurar un MovementMethod en TextView, p. Ej. LinkMovementMethod: [? Cómo hacer clic o toque en una TextView texto en diferentes palabras]

tv.setMovementMethod(LinkMovementMethod.getInstance()); 
Cuestiones relacionadas