设置TextView中超链接字体颜色、下划线


ClickableSpan:这是超链接相关的样式控制和点击事件的控制类,我们需要对它进行继承,然后修改成我们需要的样式。其中,可以对超链接文本字符进行颜色、字体大小、字体、下划线、点击事件的自定义控制。

 
  

public class PhoneClickSpan extends ClickableSpan {

    public interface OnLinkClickListener {
        void onLinkClick(View view);
    }

    private OnLinkClickListener listener;

    public PhoneClickSpan(OnLinkClickListener listener) {
        super();
        this.listener = listener;
    }

    @Override
    public void onClick(View widget) {
        listener.onLinkClick(widget);
    }

    @Override
    public void updateDrawState(TextPaint ds) {
        super.updateDrawState(ds);
        ds.setColor(Color.argb(255, 255, 164, 102)); // 设置字体颜色
        ds.setUnderlineText(false); //去掉下划线
    }

}

 
  以上是设置TextView中超链接字体颜色为金黄色,去掉下划线。 
  

注意:在网上有说设置超链接颜色用的是这个方法:ds.setColor(0xFF0000);经测试这个方法设置会导致超链接文字不可见的问题。

 

在看下具体的超链接控制:

// 确定可点区域,并设置点击事件
private void setLinkClickable(final SpannableStringBuilder clickableHtmlBuilder,
                                  final URLSpan urlSpan) {
        int start = clickableHtmlBuilder.getSpanStart(urlSpan);
        int end = clickableHtmlBuilder.getSpanEnd(urlSpan);
        int flags = clickableHtmlBuilder.getSpanFlags(urlSpan);
	
        PhoneClickSpan phoneClickSpan = new PhoneClickSpan(new PhoneClickSpan.OnLinkClickListener() {
            @Override
            public void onLinkClick(View view) {
                // do something
                doSomething();
            }
        });

        clickableHtmlBuilder.setSpan(phoneClickSpan, start, end, flags);
    }

    // 为所有超链接设置样式
    private CharSequence getClickableHtml(String html) {
        Spanned spannedHtml = Html.fromHtml(html);
        SpannableStringBuilder clickableHtmlBuilder = new SpannableStringBuilder(spannedHtml);
	// 获取所有超链接
        URLSpan[] urls = clickableHtmlBuilder.getSpans(0, spannedHtml.length(), URLSpan.class);  
        for(final URLSpan span : urls) { 
            setLinkClickable(clickableHtmlBuilder, span); // 为每个超链接样式设置
        }
        return clickableHtmlBuilder;
    }

然后在对xml布局进行设置:

<
此处重点是设置android:autoLink="all"

最后,就是进行调用了。

也很简单:

TextView tvTip = (TextView) view.findViewById(R.id.user_forgetpassword);


tvTip.setText(getClickableHtml(tvTip.getText().toString()+ "修改手机号码"));


tvTip.setMovementMethod(LinkMovementMethod.getInstance()); //设置超链接为可点击状态

关键之处是:tvTip.setMovementMethod(LinkMovementMethod.getInstance()); 一定要进行调用!


注意:因为我只是想设置“修改手机号码”这几个字可点击而已,所以并不会跳转到百度首页,我只是要跳转到修改手机号码界面而已。


上效果图:

设置TextView中超链接字体颜色、下划线_第1张图片


另附TextView字体样式相关设置链接:http://blog.csdn.net/jdsjlzx/article/details/19122103

搞定,收队!


你可能感兴趣的:(安卓开发,android,studio)