0

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

代码:

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

1 回答 1

0

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

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

于 2013-11-12T19:38:26.847 回答