2011-04-08 4 views
25

J'ai un petit problème, j'ai besoin de supprimer ou de personnaliser cette surbrillance orange en cliquant sur clickablespan. Ceci est ma classe extension ClickableSpanMettez en surbrillance clickablespan cliquez sur

public class InternalClickableSpan extends ClickableSpan { 

    private String clicked; 

    @Override 
    public void updateDrawState(TextPaint ds) { 
     ds.setUnderlineText(false); 
    } 

    public InternalClickableSpan(String clickedString) { 
     clicked = clickedString; 
    } 

    @Override 
    public void onClick(View view) { 
     Selection.setSelection((Spannable) ((TextView)view).getText(), 0); 
     Toast toast = Toast.makeText(mContext, clicked, Toast.LENGTH_SHORT); 
     toast.show(); 
    } 
} 

et voici comment je l'utilise sur la vue texte

Spannable spans = (Spannable) tv.getText();  
spans.setSpan(new InternalClickableSpan(contacts[i]), text.indexOf(contacts[i]), text.indexOf(contacts[i])+contacts[i].length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 

Quelqu'un sait-il comment personnaliser « onclick highlight » sur l'objet spannable?

edit: Merci Aleadam pour sa réponse, je suis en train de surcharger updateDrawState (jetez un oeil à la première méthode dans ma classe InternalClickableSpan), mais je ne peux pas trouver un moyen de personnaliser ce higlight quand même. Est-ce que quelqu'un a d'autres idées? Merci

+0

Essayez impérieuses updateDrawState()? http://developer.android.com/reference/android/text/style/ClickableSpan.html#updateDrawState%28android.text.TextPaint%29 – Aleadam

+0

@Aleadam merci pour la réponse, je suis surcharger updateDrawState (s'il vous plaît jeter un oeil à la première méthode dans ma classe InternalClickableSpan), mais je ne peux pas trouver un moyen de personnaliser cette higlight de toute façon. Est-ce que quelqu'un a d'autres idées? Merci – Robert

+11

Pensez que je l'ai eu, pour désactiver higlight nous devons définir la méthode setHighlightColor (Color.TRANSPARENT) sur TextView – Robert

Répondre

0
<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout android:id="@+id/LinearLayout01" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    xmlns:android="http://schemas.android.com/apk/res/android"> 

    <LinearLayout android:id="@+id/LinearLayout02" 
     android:layout_height="50px" 
     android:layout_width="fill_parent" 
     // Layout Click enable 
     android:clickable="true" 
     // Setting Highlight Option in background property 
     android:background="@android:drawable/list_selector_background" /> 
    </LinearLayout> 
</LinearLayout> 
+0

voir [l'aide] (http://stackoverflow.com/editing-help#code-and-preformatted-text) pour savoir comment formater le code dans l'éditeur – McDowell

1

il suffit d'utiliser ce ..

view.setSelector(new ColorDrawable(Color.TRANSPARENT)); 
+0

Ceci est pour les vues de liste seulement –

15

Vous pouvez remplacer onClick (Voir le widget) comme ceci:

 @Override 
     public void onClick(View widget) { 
      // do what must happen after click event. 
      widget.invalidate(); 
     } 
+0

Cela a fonctionné pour moi. Tonnes d'heures sauvegardées. Merci mon pote!! – moDev

11

Cela supprimera toute évidence.

tv.setHighlightColor(Color.TRANSPARENT); 
0

enter image description here

ClickableSpan linkClick = new ClickableSpan() { 
    @Override 
    public void onClick(View view) { 
     Toast.makeText(getApplicationContext(), "Link Click", 
       Toast.LENGTH_SHORT).show(); 
     view.invalidate(); 
    } 

    @Override 
    public void updateDrawState(TextPaint ds) { 
     if (textView.isPressed()) { 
      ds.setColor(Color.BLUE); 
      textView.invalidate(); 
     } else { 
      ds.setColor(Color.RED); 
     } 
    } 
}; 
textView.setHighlightColor(Color.TRANSPARENT); 

Spannable spannableString = new SpannableString("Link in TextView"); 
spannableString.setSpan(linkClick, 0, 4, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); 
textView.setText(spannableString, TextView.BufferType.SPANNABLE); 
textView.setMovementMethod(LinkMovementMethod.getInstance()); 
Questions connexes