TextView中实现部分文字点击

在开发过程中有时候需要实现TextView部分文字的点击效果,实现该功能可以自定义文本控件,也可以用android源生api实现

1、SpannableString是CharSequence接口的实现类,同时它也实现了Spannable接口;

  ①SpannableString通过setSpan方法可以设置TextView文本的各种样式,包括文本中插入图片(ImageSpan),前景色(ForegroundColorSpan),背景色(BackgroundColorSpan)等

  ②SpanableString也可以通过设置ClickableSpan设置某一些文字可以被点击

  ③复写ClickableSpan中的方法

ClickableSpan click = new ClickableSpan() {

            @Override
            public void onClick(View widget) {
                Toast.makeText(OptionalInfoActivity.this, "该功能尚未实现",
                        Toast.LENGTH_SHORT).show();
            }

            @Override
            public void updateDrawState(TextPaint ds) {
                ds.setUnderlineText(false);
                ds.clearShadowLayer();
                ds.setColor(getResources().getColor(R.color.custom_blue));
                ds.setStrokeMiter(3);

            }
        };
View Code

   ④   

SpannableString spannable = new SpannableString(text);

ClickableSpan click = new ClickableSpan() {

    @Override
    public void onClick(View widget) {
        Toast.makeText(OptionalInfoActivity.this, "该功能尚未实现",Toast.LENGTH_SHORT).show();
    }

    @Override
    public void updateDrawState(TextPaint ds) {
        ds.setUnderlineText(false);
            ds.clearShadowLayer();
                ds.setColor(Color.RED);
    }
};

spannable.setSpan(click,start,end,SpannableString.SPAN_INCLUSIVE_INCLUSIVE);
View Code

  TextView.setText(spannable);     

  api文档中说道If an object of this type is attached to the text of a TextView with a movement method of LinkMovementMethod, the affected spans of text can be selected. If clicked, the onClick(View) method will be called. 

  故还必须给这个TextView设置 TextView.setMovementMethod(LinkMovementMethod.getInstance());

  

posted @ 2014-03-27 12:06  ProfessionalButcher  阅读(1634)  评论(0)    收藏  举报