码迷,mamicode.com
首页 > 移动开发 > 详细

android如果给TextView或EditText的email链接加下划线,并在点击在email连接上可以弹框显示

时间:2014-07-31 00:02:05      阅读:427      评论:0      收藏:0      [点我收藏+]

标签:textview   下划线   

如何把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();
	}

}

<span style="white-space:pre">	</span>TextView textView = (TextView)findViewById(R.id.textview);
		String str = "$#%$%$%$fsdfsddsfsdf@163.com&*&*DFDF152152@1255.com";
		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[.-]]+@[\\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);
	        }
   }
   

效果图:

bubuko.com,布布扣

android如果给TextView或EditText的email链接加下划线,并在点击在email连接上可以弹框显示,布布扣,bubuko.com

android如果给TextView或EditText的email链接加下划线,并在点击在email连接上可以弹框显示

标签:textview   下划线   

原文地址:http://blog.csdn.net/baidu_nod/article/details/38307615

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!