让某些文字改变颜色+添加超链接的SpannableString的简单用法

按照我的理解SpannableString     举个例子:就是让我们做出向一些登录授权中,那几行字上有的会有下划线,或者点击文字,跳转网页,还有我们使用的QQ中发消息的时候,文字加表情,实现图文混排的效果等等。。。

点击打开链接原博主地址

[java]  view plain  copy
  1. "font-size:18px;" deep="6">public class MainActivity extends AppCompatActivity {  
  2.   
  3.     @Override  
  4.     protected void onCreate(Bundle savedInstanceState) {  
  5.         super.onCreate(savedInstanceState);  
  6.         setContentView(R.layout.activity_main);  
  7.         TextView name = (TextView) findViewById(R.id.name);  
  8.         //封装一个SpannableString  
  9.         SpannableString spannableString = new SpannableString("热烈庆祝十九大顺利召开,跟着党走是我的信念");  
  10.         //背景色  
  11.         spannableString.setSpan(new BackgroundColorSpan(Color.RED),2,5, Spannable.SPAN_EXCLUSIVE_INCLUSIVE);  
  12.         //前景色  
  13.         spannableString.setSpan(new ForegroundColorSpan(Color.BLUE),2,5, Spannable.SPAN_EXCLUSIVE_INCLUSIVE);  
  14.         //下划线  
  15.         spannableString.setSpan(new UnderlineSpan(),0,5, Spannable.SPAN_EXCLUSIVE_INCLUSIVE);  
  16.   
  17.         //图片(图文混排)  
  18.         Drawable drawable = getResources().getDrawable(R.mipmap.ic_launcher);  
  19.         drawable.setBounds(0,0,80,80);  
  20.         spannableString.setSpan(new ImageSpan(drawable),5,6, Spannable.SPAN_EXCLUSIVE_INCLUSIVE);  
  21.         //加粗  
  22.         spannableString.setSpan(new StyleSpan(Typeface.BOLD_ITALIC),7,9, Spannable.SPAN_EXCLUSIVE_INCLUSIVE);  
  23.         //下标  
  24.         spannableString.setSpan(new SubscriptSpan(),7,9, Spannable.SPAN_EXCLUSIVE_INCLUSIVE);  
  25.   
  26.         //超文本链接  
  27.         spannableString.setSpan(new URLSpan("http://www.baidu.com"),10,12, Spannable.SPAN_EXCLUSIVE_INCLUSIVE);  
  28.   
  29.         //点击事件  
  30.         spannableString.setSpan(new ClickableSpan() {  
  31.             @Override  
  32.             public void onClick(View widget) {  
  33.                 System.out.println("widget"+widget);  
  34.             }  
  35.             @Override  
  36.             public void updateDrawState(TextPaint ds) {  
  37.                 super.updateDrawState(ds);  
  38.                 //可以改变颜色  
  39.                 ds.setColor(Color.RED);  
  40.                 ds.setUnderlineText(true);  
  41.             }  
  42.         },13,15,Spannable.SPAN_INCLUSIVE_EXCLUSIVE);  
  43.   
  44.   
  45.   
  46.         name.setText(spannableString);  
  47.         //超文本需要加的代码  
  48.         name.setMovementMethod(new LinkMovementMethod());  
  49.   
  50.   
  51.   
  52.         //输入框中  
  53.         EditText et_name = (EditText) findViewById(R.id.et_name);  
  54.         SpannableString spannableString1 = new SpannableString("跟着党走是我的信念");  
  55.         spannableString1.setSpan(new ForegroundColorSpan(Color.BLUE),0,4, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);  
  56.         et_name.setText(spannableString1);  
  57.     }  
  58. }  



  下面可以参考:




你可能感兴趣的:(Android)