android下划线链接,android dev如何在字符串中像链接颜色那样加下划线和更改单词的颜色...

好的,所以你需要做几件事情。他们完成这个任务的方式是在TextView中使用span。

首先,您需要扩展ClickableSpan类:

public class MySpan extends ClickableSpan {

public interface OnMySpanClickListener {

public void onMySpanClick(String tag);

}

private final String myData;

private OnMySpanClickListener mOnMySpanClickListener;

public MySpan(String tag) {

super();

if (tag == null) {

throw new NullPointerException();

}

myData = tag;

}

@Override

public void onClick(View widget) {

if (mOnMySpanClickListener != null) {

mOnMySpanClickListener.onMySpanClick(myData);

}

}

public OnMySpanClickListener getOnMySpanClickListener() {

return mOnMySpanClickListener;

}

public void setOnMySpanClickListener(OnMySpanClickListener onMySpanClickListener) {

mOnMySpanClickListener = onMySpanClickListener;

}

}

您的活动,您将设置TextView的像这样的文字:

String myString = getFromDatabase();

SpannableStringBuilder builder = new SpannableStringBuilder();

builder.append(myString);

//You'll need to call the constructor for MySpan with only the value of the part

//of the string that you want to work with ("Bob" in the example), however you

//determine that.

String substringThatShouldBeClickable = getMySubstring(myString); //"Bob"

MySpan span = new MySpan(substringThatShouldBeClickable);

span.setOnMySpanClickListener(mySpanOnClickListener);

//start and end control the range of characters in the string that are clickable,

//so modify this part so it only underlines the characters you want clickable

int start = 0;

int end = bulider.length();

builder.setSpan(span, start, end, 0);

label.setText(builder);

label.setMovementMethod(LinkMovementMethod.getInstance());

最后,你会需要一个处理程序的点击事件跨度:

MySpan.OnMySpanClickListener mySpanOnClickListener = new MySpan.OnMySpanClickListener() {

public void onMySpanClick(String tag) {

//Here is where you'll do your work with the value in the String "tag"

}

};

希望这会有所帮助。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值