归志宁无五亩园,读书本意在元元。这篇文章主要讲述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(); }}
< span style="white-space:pre"> < /span> 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); } }
效果图:
【android假设给TextView或EditText的email链接加下划线,并在点击在email连接上能够弹框显示】
文章图片
推荐阅读
- Android消息机制学习笔记
- maven项目打包的时候,*Mapper.xml 文件会打不不进去解决办法
- 新建maven工程使用webapp插件弹出javax.servlet.http.HttpServlet was not found on the Java Build Path异常
- android 项目R文件丢失解决的方法
- Android异步载入AsyncTask具体解释
- 从零開始学android&lt;Bitmap图形组件.四十七.&gt;
- Android(图片中叠加文字,支持拖动改变位置)
- unity3d开发的android应用中增加AD系统的详细步骤
- Android调用相机实现拍照并裁剪图片,调用手机中的相冊图片并裁剪图片