Android ClickableSpan que no llama onClick
Estoy creando un ClickableSpan, y está exhibiendo correctamente con el texto correcto subrayado. Sin embargo, los clics no se están registrando. ¿Sabes lo que estoy haciendo mal ??? Gracias, Victor Aquí está el fragmento de código:
view.setText("This is a test"); ClickableSpan span = new ClickableSpan() { @Override public void onClick(View widget) { log("Clicked"); } }; view.getText().setSpan(span, 0, view.getText().length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
- Cambiar entre un TextView y EditText
- Margen de set / padding de Android para el contenido (texto) en lugar de un contenedor (EditText)
- Cómo personalizar el tipo de entrada de texto Android
- Pegar sin formato de texto enriquecido en EditText
- Problemas enfocando EditTexts en un ListView (Android)
- Android EditText: Hecho en lugar de Enter o Word Wrap en lugar de Multi Line
- Layout duplicando a sí mismo en la rotación de la pantalla
- SetCompoundDrawablesWithIntrinsicBounds (int, int, int, int) no funciona
- Cambiar el color del cursor editext en API 12
- Cómo comprobar el estado de visibilidad de EditText en android?
- EditText no recibe eventos clave TAB - stock soft vk
- Android EditText Multiline con SoftInputMode adjustPan
- AutoLink = "todos" la característica de TextView Android
¿Ha intentado establecer el método MovementMethod en el TextView que contiene el span? Tienes que hacer eso para hacer clic en el trabajo …
tv.setMovementMethod(LinkMovementMethod.getInstance());
Después de algún ensayo y error, la secuencia de establecer el tv.setMovementMethod(LinkMovementMethod.getInstance());
sí importa.
Aquí está mi código completo
String stringTerms = getString(R.string.sign_up_terms); Spannable spannable = new SpannableString(stringTerms); int indexTermsStart = stringTerms.indexOf("Terms"); int indexTermsEnd = indexTermsStart + 18; spannable.setSpan(new UnderlineSpan(), indexTermsStart, indexTermsEnd, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); spannable.setSpan(new ForegroundColorSpan(getColor(R.color.theme)), indexTermsStart, indexTermsEnd, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); spannable.setSpan(new ClickableSpan() { @Override public void onClick(View widget) { Log.d(TAG, "TODO onClick.. Terms and Condition"); } }, indexTermsStart, indexTermsEnd, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); int indexPolicyStart = stringTerms.indexOf("Privacy"); int indexPolicyEnd = indexPolicyStart + 14; spannable.setSpan(new UnderlineSpan(), indexPolicyStart, indexPolicyEnd, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); spannable.setSpan(new ForegroundColorSpan(getColor(R.color.theme)), indexPolicyStart, indexPolicyEnd, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); spannable.setSpan(new ClickableSpan() { @Override public void onClick(View widget) { Log.d(TAG, "TODO onClick.. Privacy Policy"); } }, indexPolicyStart, indexPolicyEnd, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); TextView textViewTerms = (TextView) findViewById(R.id.sign_up_terms_text); textViewTerms.setText(spannable); textViewTerms.setClickable(true); textViewTerms.setMovementMethod(LinkMovementMethod.getInstance());
- Archivo de exportación desde una aplicación de Android a la aplicación de calendario de Google
- ¿Cómo capturar la actividad del navegador?