android 超链接 点击时改变背景色 类似google+效果如何实现
如图点击后会修改超链接背景颜色为蓝色,松手时恢复。
1、我继承了ClickableSpan,重写onClick方法,在这里获取到点击事件后打开游览器。
问题一:这个事件只有在抬起时才获取,如何在按下时获取从而改变背景色
问题二:这种实现方式引发了很多TextView点击事件问题,还有什么其他很好的实现方式
public class LinkClickSpan extends ClickableSpan {
public LinkClickSpan() {
super();
}
@Override
public void updateDrawState(TextPaint ds) {
// ds.setColor(ds.linkColor);
// ds.setUnderlineText(false);
}
@Override
public void onClick(View widget) {
Context context = widget.getContext();
TextView tv = (TextView) widget;
tv.setOnClickListener(null);
int start = tv.getSelectionStart();
int end = tv.getSelectionEnd();
SpannableStringBuilder spanString = TextViewUtils
.replaceLinkBgColorByIndex(context, tv);
tv.setText(spanString);
String str = spanString.subSequence(start, end).toString();
if (str.startsWith("www")) {
str = "http://" + str;
}
Uri uri = Uri.parse(str);
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
intent.putExtra(Browser.EXTRA_APPLICATION_ID, context.getPackageName());
context.startActivity(intent);
}
}
小逗逼嘎嘎嘎
12 years, 2 months ago
Answers
已解决 通过监听TextView的touch事件,按下时替换连接的背景色
因为可能存在文本和链接交替存在的情况,所以要计算当前按下的位置( event.getX)在哪个连接之上
Ticshot
answered 12 years, 2 months ago