Il codice seguente mostra come sto applicando uno stato premuto utilizzando un ClickableSpan e un selettore personalizzati. Tuttavia, lo stato premuto viene applicato ogni volta che premo su TextView, non solo su ClickableSpan. Come lo fermo?Come utilizzare ClickableSpan, ma ignorare i clic dal TextView
Nota: non chiamaonClick
, ma si applicastate_pressed
dal selettore. Voglio che non faccia né l'uno né l'altro.
MyView.java
SpannableString spanned = new SpannableString("click here");
spannable.setSpan(new MyClickableSpan() {
@Override
public void onClick(View widget) {
doSomething();
}
}, start, end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
textView.setText(spanned);
textView.setMovementMethod(LinkMovementMethod.getInstance());
MyClickableSpan.java
public abstract class MyClickableSpan extends ClickableSpan {
@Override
public abstract void onClick(View view);
@Override
public void updateDrawState(TextPaint ds) {
super.updateDrawState(ds);
ds.setUnderlineText(false);
}
}
TextView
<TextView
android:id="@+id/my_text_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@android:color/white"
android:textColorLink="@color/my_selector" />
my_selector.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:color="@color/my_color_pressed" />
<item android:color="@color/my_color" />
</selector>
Modifica nota: il codice Aggiunto TextView
mostrano il codice in cui si imposta la ClickableSpan in TextView –
Hai provato la mia soluzione? –
@Fifer Sheep, forse stai cercando questa soluzione. http://stackoverflow.com/questions/20856105/change-the-text-color-of-a-single-clickablespan-when-pressed-without-affecting-o – TheGreat004