按下时如何更改链接的文本颜色(触摸或按下效果)。请参阅下面的代码
代码:
SpannableString spanStr = new SpannableString(tag);
spanStr.setSpan(new HashTagsClickableSpan(tag), 0, tag.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
spanStr.setSpan(new ForegroundColorSpan(Color.RED),0,tag.length(),Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
class HashTagsClickableSpan extends ClickableSpan{
String clicked;
public HashTagsClickableSpan(String string) {
super();
clicked =string;
}
public void onClick(View tv) {
Toast.makeText(getActivity(), "Text = " + clicked,Toast.LENGTH_SHORT).show();
}
@Override
public void updateDrawState(TextPaint ds) {
ds.setUnderlineText(false);
}
}
答案 0 :(得分:0)
ClickableSpan.onClick
仅在ACTION_UP
之后调用,因此对于您想要的效果来说可能为时已晚。通常,您可以致电View.invalidate()
发布重绘(以及对updateDrawState
的另一次调用)。
为了获得良好的按下效果,您最好注册一个带有View.setOnTouchListener
的触摸侦听器,直接侦听鼠标事件,必要时修改自定义跨度状态,以及发布无效。