Come sbarazzarsi della sottolineatura in una string spannabile con un object cliccabile?

Attualmente ho un object Spannable con un object Clickable impostato su di esso. Quando la string Spannable viene visualizzata in TextView ha text blu e sottolineatura blu (che indica all'utente che questo text è clickabile). Il mio problema è come posso impedire che la sottolineatura blu non venga visualizzata? Ho cercato intorno ma non riesco a trovare nulla.

  • Come posso integrare il portfoglio Paytm in un'applicazione Android?
  • Come mai millisUntilFinished non riesce a rilevare gli intervalli CountDownTimer esatti?
  • onCreateView () non viene chiamato immediatamente dopo FragmentTransaction.commit ()
  • Come get l'evento finale di chiamata in App Android
  • Come seguire in modo continuo la posizione di un telefono cellulare Android?
  • android nested listview
  • 6 Solutions collect form web for “Come sbarazzarsi della sottolineatura in una string spannabile con un object cliccabile?”

    Utilizza il codice riportto di seguito e prova

    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 } } 

    Questo funziona per me. Non è necessario creare la class ClickableSpan . Basta ignorare 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 risposta di Raghunandan funziona perfettamente per me. Ecco una versione pared-down di esso:

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

    Sostituire il metodo updateDrawState della class 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 } 

    Per cambiare il colore di String spannable

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

    spannableStringObject.toString ();

    Modifica

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

    Rimuoverà tutti gli UnderlineSpans da Spannable.

     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 } } 
    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.