android TextView 实现自定义文字点击效果
16lz
2021-01-23
Android TextView 可以通过
android:autoLink="phone" 来设置文字的默认点击行为。 我们也可以自己定义文字的点击行为
TextView textView = (TextView) findViewById(R.id.span_text);StringBuilder sb = new StringBuilder();sb.append("个人信息");sb.append("+ ">" + "地址");sb.append("+ ">" + "名字");textView.setText(Html.fromHtml(sb.toString()));textView.setMovementMethod(LinkMovementMethod.getInstance());textView.setHighlightColor(Color.TRANSPARENT);//去掉点击后的蓝色背景CharSequence text = textView.getText();if (text instanceof Spannable) { int end = text.length(); Spannable sp = (Spannable) textView.getText(); URLSpan[] urls = sp.getSpans(0, end, URLSpan.class); SpannableStringBuilder style = new SpannableStringBuilder(text); style.clearSpans();// should clear old spans // 循环把链接发过去 for (URLSpan url : urls) { MyURLSpan myURLSpan = new MyURLSpan(url.getURL()); style.setSpan(myURLSpan, sp.getSpanStart(url), sp.getSpanEnd(url), Spannable.SPAN_EXCLUSIVE_INCLUSIVE); } textView.setText(style);}
class MyURLSpan extends ClickableSpan{ String url; @Override public void updateDrawState(TextPaint ds) { super.updateDrawState(ds); ds.setColor(Color.parseColor("#f37021"));//颜色 ds.setUnderlineText(false);//去掉下划线 } public MyURLSpan(String url) { this.url = url; } @Override public void onClick(View widget) { Toast.makeText(MainActivity.this, url + " is clicked" ,Toast.LENGTH_SHORT).show(); }}
更多相关文章
- android之网络请求 -- 获取RecyclerView的列表项(图片 + 文字)
- Android 的实现TextView中文字链接的4种方法
- Android中EditText输入框焦点从文字前面变成文字后面
- Android TextView文字横向自动滚动(跑马灯)
- android textview 利用空格实现文字均匀分布
- Android 为图片添加文字水印
- Android MenuItem 设置文字颜色-TextColor的设置
- 自定义垂直文字view