以下介绍SpannableString 对文字的一些特别处理:比如字体,颜色,下划线,链接和点击事件。
先看效果:

布局代码就不贴了,很简单就是3个TextView.现在看MainActivity中的代码实现:

    private TextView mTvContent1;    private TextView mTvContent2;    private TextView mTvContent3;    private String contentStr1 = "点击事件,下划线,字体颜色";    private String contentStr2 = "百度链接";    private String contentStr3 = "粗体";    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        //设置点击事件,下划线,字体颜色        mTvContent1 = (TextView) findViewById(R.id.tv_content1);        SpannableString ss1 = new SpannableString(contentStr1);        ss1.setSpan(new ClickableSpan() {            @Override            public void updateDrawState(TextPaint ds) {                super.updateDrawState(ds);                ds.setUnderlineText(true);//设置下划线                ds.setColor(Color.RED);//设置字体颜色            }            @Override            public void onClick(View widget) {                Toast toast = Toast.makeText(MainActivity.this, "点击", Toast.LENGTH_SHORT);                toast.show();            }        }, 0, contentStr1.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);        mTvContent1.setText(ss1);        mTvContent1.setHighlightColor(Color.TRANSPARENT);        mTvContent1.setMovementMethod(LinkMovementMethod.getInstance());        //设置链接        mTvContent2= (TextView) findViewById(R.id.tv_content2);        SpannableString ss2 = new SpannableString(contentStr2);        ss2.setSpan(new URLSpan("http://www.baidu.com"), 0, contentStr2.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);        mTvContent2.setText(ss2);        mTvContent2.setMovementMethod(LinkMovementMethod.getInstance());        //设置粗体:        mTvContent3= (TextView) findViewById(R.id.tv_content3);        SpannableString ss3 = new SpannableString(contentStr3);        ss3.setSpan(new StyleSpan(android.graphics.Typeface.BOLD), 0, contentStr3.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);        mTvContent3.setText(ss3);    }}

以上就是整个代码:其中对于点击和链接事件,要特别注意需要setMovementMethod,否则可能不会响应事件。

更多相关文章

  1. Android(安卓)studio 类似于eclipse 中的 Ctrl+1 快捷键(quick f
  2. Android面试总结-中高级
  3. 浅谈Android下的Wifi&&安卓WIFI 移植
  4. Android安卓 PopupWindow工具类
  5. android TextView 中的字体
  6. GestureDetector部分源码分析
  7. Android中ConvenientBanner的使用
  8. Android中Dialog设置外部点击事件
  9. android 拍照图片旋转问题

随机推荐

  1. android 进程自杀再重启的方法
  2. 转:Android世界的15款开源的游戏开发引擎
  3. Android(安卓)OpenGL ES2.0编程教程系列
  4. Android之Shared Preferences
  5. Android(安卓)day_11 (四种对话框)
  6. 2.Retrofit上传list数组给后端
  7. Android(安卓)布局
  8. android handler正确写法
  9. Android实现手写板和涂鸦功能
  10. Android(安卓)studio引用包冲突