android edittext email,android假设给TextView或EditText的email链接加下划线,并在点击在email连接上能够弹框显示...

怎样把textview的一些文字加上背景色:

Spannable str = new SpannableString("#fdsfdfsdfdsfd#");

Matcher matcher = getEmailPattern().matcher((CharSequence) str);

while (matcher.find()) {

int start = matcher.start();

int end = matcher.end();

str.setSpan(new ForegroundColorSpan(0xFF1A5798), start, end,

Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

}

textView.setText(str);

假设在TextView上把email链接找出来并加上下划线:

写一个属性类继承ClickableSpan

public class MessageBundleSpan extends ClickableSpan {

public enum LinkType {

EMAIL

}

private String mText;

private MainActivity mActivity;

public MessageBundleSpan(MainActivity activity, String text) {

if (activity == null) {

throw new NullPointerException("activity is NULL");

}

mActivity = activity;

mText = text;

}

@Override

public void updateDrawState(TextPaint ds) {

ds.setColor(mActivity.getResources().getColor(

R.color.message_bundle_link));

ds.setUnderlineText(true);

}

@Override

public void onClick(View widget) {

new AlertDialog.Builder(mActivity).setTitle("Title").setMessage(mText)

.create().show();

}

}

TextView textView = (TextView)findViewById(R.id.textview);

String str = "$#%$%$%[email protected]&*&*[email protected]";

textView.setText(str);

SpannableStringBuilder stringBuilder = new SpannableStringBuilder(textView.getText());

applyRegexPattern(textView, stringBuilder, getEmailPattern(), MessageBundleSpan.LinkType.EMAIL);

textView.setText(stringBuilder, TextView.BufferType.SPANNABLE);

textView.setMovementMethod(LinkMovementMethod.getInstance());

private static Pattern getEmailPattern() {

if (sharppattern == null)

sharppattern = Pattern.compile("[\\w[.-]][email protected][\\w[.-]]+\\.[\\w]+");

return sharppattern;

}

private void applyRegexPattern(TextView textView, SpannableStringBuilder stringBuilder, Pattern pattern, MessageBundleSpan.LinkType type) {

Matcher matcher = pattern.matcher(textView.getText().toString().toLowerCase());

while(matcher.find()) {

String text = textView.getText().toString().substring(matcher.start(), matcher.end());

stringBuilder.setSpan(new MessageBundleSpan(this, text), matcher.start(), matcher.end(), Spannable.SPAN_INCLUSIVE_INCLUSIVE);

}

}

效果图:

84ab64953fac7dec4670e678f998727b.png

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值