按下时更改android SpannableString链接文本颜色

时间:2013-11-12 12:27:34

标签: android

按下时如何更改链接的文本颜色(触摸或按下效果)。请参阅下面的代码

代码:

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);
   }
} 

1 个答案:

答案 0 :(得分:0)

ClickableSpan.onClick仅在ACTION_UP之后调用,因此对于您想要的效果来说可能为时已晚。通常,您可以致电View.invalidate()发布重绘(以及对updateDrawState的另一次调用)。

为了获得良好的按下效果,您最好注册一个带有View.setOnTouchListener的触摸侦听器,直接侦听鼠标事件,必要时修改自定义跨度状态,以及发布无效。