studio propiedades programacion móviles edittext desarrollo curso aplicaciones android onclick clickable spannablestring spannable

propiedades - Android: ¿No se puede hacer clic en el texto de TextView durante la ejecución?



programacion android pdf 2018 (1)

Android.text.style.ClickableSpan para hacer una parte ( Black ) de una cadena ( Blue | Black ) en la que se puede hacer clic:

SpannableString spannableString = new SpannableString("Blue | Black "); ClickableSpan clickableSpan = new ClickableSpan() { @Override public void onClick(View textView) { //... } }; ss.setSpan(clickableSpan, 7, 11, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); TextView textView = (TextView) findViewById(R.id.secondActivity_textView4); textView.setText(spannableString); textView.setMovementMethod(LinkMovementMethod.getInstance());

Entonces se puede hacer clic en la parte Black de la cadena. Lo que quiero es que cuando el usuario haga clic en Black , haga clic en Black no seleccionable y Blue (otra parte de la misma cadena).

Entonces, para poder hacer clic en Blue , podemos llamar a setSpan() en el mismo spannableString otro momento. ¿Pero cómo puedo hacer que Black no se pueda hacer clic?


Puede llamar a removeSpan() para eliminar cualquier removeSpan() agregado previamente. En este caso particular, es muy fácil, ya que mantenemos una referencia al mismo intervalo que queremos eliminar:

ClickableSpan clickableSpan = new ClickableSpan() { @Override public void onClick(View view) { ((SpannableString)textView.getText()).removeSpan(this); } };

Otra opción podría ser iterar sobre todas las instancias de ClickableSpan y eliminarlas todas, como por ejemplo:

SpannableString str = (SpannableString)textView.getText(); for (ClickableSpan span : str.getSpans(0, str.length(), ClickableSpan.class)) str.removeSpan(span);

Por alguna razón que no puedo comprender, la documentación de los tramos es realmente pobre ... ¡son bastante poderosos!