设置TextView下划线并响应点击事件(SpannableString)
下面是一个20行的完整Demo代码:基本原理是使用一个SpannableString并设置其ClickableSpan来响应点击事件。
TextView useInfo = (TextView) findViewById(R.id.info); String url_0_text = "用户协议及隐私条款"; useInfo.setText("开始即表示您同意遵守"); SpannableString spStr = new SpannableString(url_0_text); spStr.setSpan(new ClickableSpan() { @Override public void updateDrawState(TextPaint ds) { super.updateDrawState(ds); ds.setColor(Color.WHITE); //设置文件颜色 ds.setUnderlineText(true); //设置下划线 } @Override public void onClick(View widget) { Log.d("", "onTextClick........"); } }, 0, url_0_text.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); useInfo.setHighlightColor(Color.TRANSPARENT); //设置点击后的颜色为透明,否则会一直出现高亮 useInfo.append(spStr); useInfo.setMovementMethod(LinkMovementMethod.getInstance());//开始响应点击事件
Demo完成。