TextView – OnClick – Android
¿Es posible agregar onclick a alguna parte de un textview? Por ejemplo mi código va como esto,
String content = "Hello this a test.. For more details contact @Peter"; someTextView.setText(content);
Me gustaría añadir un evento onClick para "@Peter". ¿Es eso posible?
- Enfocar el siguiente texto automáticamente
- Cómo centrar un texto verticalmente en un texto estrecho en Android?
- Escribe un párrafo con textview en Android
- ¿Puedo saber cuántos caracteres pueden caber en TextView de X anchura dp?
- Borde de desvanecimiento para TextView verticalmente desplazable
TIA.
- TextView envuelve el texto después de cambiar el tipo de letra
- TextView muestra "false" en lugar de texto de recurso
- End TextView con 3 puntos con el uso de maxLength
- Cómo mostrar 3 puntos al final del texto en la vista de texto
- Cambiar el texto de TextView
- Cómo eliminar las líneas antiguas de un TextView
- Alineación de la línea de base de dos vistas de texto en Android
- Cómo cambiar el color de fondo de TextView a valor inicial
Sencillo: -)
SpannableString link = makeLinkSpan("@Peter", new View.OnClickListener() { @Override public void onClick(View v) { // Peforme Click } }); String content = "Hello this a test.. For more details contact"; someTextView.setText(content); someTextView.append(link);
Y el método makeLinkSpan()
es
private SpannableString makeLinkSpan(CharSequence text, View.OnClickListener listener) { SpannableString link = new SpannableString(text); link.setSpan(new ClickableString(listener), 0, text.length(), SpannableString.SPAN_INCLUSIVE_EXCLUSIVE); return link; }
Clase ClickableString
private static class ClickableString extends ClickableSpan { private View.OnClickListener mListener; public ClickableString(View.OnClickListener listener) { mListener = listener; } @Override public void onClick(View v) { mListener.onClick(v); } }
En tu Xml agrega esto, android:clickable="true"
En el uso de la actividad como este,
textView.setOnClickListener(new View.OnClickListener(){ public void onClick(){ } }
Gracias a @ user370305 por la respuesta .. Sin embargo, se perdió algún fragmento de código en su respuesta .. Para el beneficio de los demás, estoy pegando el código completo que trabajó para mí,
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); TextView someTextView = (TextView)findViewById(R.id.someTextView); String content = "Hello this a test.. For more details contact"; someTextView.setText(content); SpannableString link = makeLinkSpan("@Peter", new View.OnClickListener() { @Override public void onClick(View v) { //Do something here.. } }); someTextView.append(link); } makeLinksFocusable(someTextView); } private void makeLinksFocusable(TextView tv) { MovementMethod m = tv.getMovementMethod(); if ((m == null) || !(m instanceof LinkMovementMethod)) { if (tv.getLinksClickable()) { tv.setMovementMethod(LinkMovementMethod.getInstance()); } } } private SpannableString makeLinkSpan(CharSequence text, View.OnClickListener listener) { SpannableString link = new SpannableString(text); link.setSpan(new ClickableString(listener), 0, text.length(), SpannableString.SPAN_INCLUSIVE_EXCLUSIVE); return link; } private static class ClickableString extends ClickableSpan { private View.OnClickListener mListener; public ClickableString(View.OnClickListener listener) { mListener = listener; } @Override public void onClick(View v) { mListener.onClick(v); } }
Esto es posible con el uso del código Java:
someTextView.setOnClickListener(new View.OnClickListener(){ public void onClick(){ //Do Stuff } });
Pero primero asegúrese de que se puede hacer clic.
someTextView.setClickable(true);
Prueba esto:
SpannableString str = new SpannableString("@Peter"); str.setSpan(new ClickableSpan() { @Override public void onClick(View widget) { // TODO Auto-generated method stub } }, 0, str.length(), Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
A continuación, agregue str
a su TextView.
También es necesario llamar a setMovementMethod(LinkMovementMethod.getInstance());
En su TextView
- ¿Es posible guardar layout_weight en un xml?
- Cómo manejar el botón 'atrás' en android cuando tengo un diálogo de progreso aparece