【发布时间】:2016-05-04 16:21:18
【问题描述】:
以下代码显示了我如何使用自定义 ClickableSpan 和选择器应用按下状态。但是,每当我按下 TextView 上的任何位置时,都会应用按下状态,而不仅仅是 ClickableSpan。我该如何阻止这种情况?
注意:它不会调用 onClick,但会从选择器中应用 state_pressed 。我不希望它做任何事情。
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>
编辑说明:添加了 TextView 代码
【问题讨论】:
-
显示将 ClickableSpan 设置为 TextView 的代码
-
你试过我的解决方案了吗?
-
@Fifer Sheep,你可能正在寻找这个解决方案。 stackoverflow.com/questions/20856105/…
-
检查this。这可能会解决您的问题。
标签: android