Der folgende Code zeigt, wie ich einen gedrückten Zustand mit einem benutzerdefinierten ClickableSpan und Selektor anwende. Der gedrückte Status wird jedoch immer dann angewendet, wenn ich irgendwo auf TextView drücke, nicht nur auf ClickableSpan. Wie höre ich damit auf?So verwenden Sie ClickableSpan, ignorieren jedoch Klicks aus dem TextView
Hinweis: es stellt nichtonClick
, aberstate_pressed
von dem Selektor gilt. Ich will es auch nicht.
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);
}
}
das 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>
Notiz bearbeiten: Added Textview-Code
zeigen den Code, wo Sie Ihre ClickableSpan Set in Textview –
Haben Sie meine Lösung versucht? –
@Fifer Schaf, möglicherweise suchen Sie nach dieser Lösung. http://stackoverflow.com/questions/20856105/change-the-text-color-of-a-single-clickablespan-when-pressed-without-affecting-o – TheGreat004