android android-textview spannable

android - ¿Cómo deshacerse del subrayado en una cadena de Spannable con un objeto cliqueable?



android-textview (7)

Tengo un Spannable Object que tiene un Spannable Object . Cuando se visualiza Spannable String en el TextView tiene texto azul y un subrayado azul (indicando al usuario que este texto es seleccionable). Mi problema es ¿cómo puedo evitar que aparezca el subrayado azul en TextView ?


spannableStringObject.toString ();

Editar

SpannableString ss = getYourSpannableString(); UnderlineSpan[] uspans = ss.getSpans(0, ss.length(), UnderlineSpan.class); for (UnderlineSpan us : uspans) { ss.removeSpan(us); }

Eliminará todos los subrayados de Spannable.


Esto funciona para mí No es necesario crear clases personalizadas de ClickableSpan . Simplemente anule updateDrawState(TextPaint ds) .

SpannableString span = new SpannableString("Some text"); ClickableSpan clickSpan = new ClickableSpan() { @Override public void updateDrawState(TextPaint ds) { ds.setColor(ds.linkColor); // you can use custom color ds.setUnderlineText(false); // this remove the underline } @Override public void onClick(View textView) { // handle click event } }; span.setSpan(clickSpan, 5, span.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); yourTextView.setText(span);


La respuesta de Raghunandan funciona perfectamente para mí. Aquí hay una versión resumida de esto:

public abstract class NoUnderlineClickableSpan extends ClickableSpan { public void updateDrawState(TextPaint ds) { ds.setUnderlineText(false); } }


Reemplazar el método updateDrawState de la clase ClickableSpan

String mystring =" Hello"; SpannableString ss= new SpannableString(mystring); ss.setSpan(new MyClickableSpan(mystring), 0, ss.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); class MyClickableSpan extends ClickableSpan{// extend ClickableSpan String clicked; public MyClickableSpan(String string) { // TODO Auto-generated constructor stub super(); clicked =string; } public void onClick(View tv) { Toast.makeText(MainActivity.this,clicked , Toast.LENGTH_SHORT).show(); } public void updateDrawState(TextPaint ds) {// override updateDrawState ds.setUnderlineText(false); // set to false to remove underline }

Para cambiar el color de la secuencia activable

SpannableString ss = new SpannableString("android "); ForegroundColorSpan fcs=newForegroundColorSpan(Color.parseColor("#01579B")); ss.setSpan(fcs, 8,13, Spannable.SPAN_INCLUSIVE_INCLUSIVE);


Usa el siguiente código y prueba

String mystring =" Hello"; SpannableString ss= new SpannableString(mystring); ss.setSpan(new MyClickableSpan(mystring), 0, ss.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); class MyClickableSpan extends ClickableSpan{// extend ClickableSpan String clicked; public MyClickableSpan(String string) { super(); clicked = string; } public void onClick(View tv) { Toast.makeText(MainActivity.this,clicked , Toast.LENGTH_SHORT).show(); } public void updateDrawState(TextPaint ds) {// override updateDrawState ds.setUnderlineText(false); // set to false to remove underline } }


la forma más simple es

string1 = new SpannableString("By Tapping Register You Agree To The /nTerms And Conditions"); ClickableSpan clickableSpan = new ClickableSpan() { @Override public void onClick(View widget) { Toast.makeText(getApplicationContext(),"clicked",Toast.LENGTH_SHORT).show(); } @Override public void updateDrawState(TextPaint ds) { ds.setUnderlineText(false); // this line removes underline } }; text_terms.setMovementMethod(LinkMovementMethod.getInstance()); string1.setSpan(clickableSpan,37,string1.length(),0); text_terms.setText(string1);


Try the below code to remove underlined and clicked event on multiple words in textview : String str="Angelina Clapped For Lester Kang"; Spannable span = Spannable.Factory.getInstance().newSpannable(str); // 0 to 8 start and index of Angelina span.setSpan(new ClickableSpan(str), 0, 8, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); // 21 to 32 start and index of Lester Kang span.setSpan(new ClickableSpan(str), 21, 32, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); textview.setText(span); class ClickableSpan extends ClickableSpan{ String clicked; public ClickableSpan (String string) { super(); } public void onClick(View v) { Toast.makeText(MyActivity.this,""+((TextView)v).getText().toString(),Toast.LENGTH_SHORT).show(); } public void updateDrawState(TextPaint ds) { // override updateDrawState ds.setUnderlineText(false); // set to false to remove underline } }