Android SpannableString 基本用法

以下介绍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,否则可能不会响应事件。

时间: 2024-10-06 20:18:27

Android SpannableString 基本用法的相关文章

Android WIFI 简单用法

随着Wifi的普及,在开发App的时候对wifi的考虑越来越多了.例如程序的升级在wifi下可以省很多流量,在通信软件中的视频通话.可以实现高画质的传输等等,Android提供了WifiManager类来帮助开发者们管理Wifi.下面就简单来说一下WifiManager的简单用法把. 权限: 为了使用WfiManager 我们需要在Androidmanifest.xml 加入权限: //本例中使用了前两个.具体请按照需要添加权限. <uses-permission android:name=&quo

Android multipartentity的用法

最近写一个程序,android手机端上传多个图片到asp.net服务器端,使用httpclient,在网上查到了使用multipartentity.上传测试时总是出现(500)Internal Server Error,最后查出原来是文件大小超出了服务器限制,在项目的web.config中添加: <system.web> <HttpRuntime maxRequestLength="409600"  executionTimeout="60" /&

Android之Fragment用法

本文翻译自Android developer网站上面,原文参考:Building a Dynamic UI with Fragments 当我们需要动态的多界面切换的时候,就需要将UI元素和Activity融合成一个模块.在2.3中我们一般通过各种Activity中进行跳转来实现多界面的跳转和单个界面动态改变.在4.0或以上系统中就可以使用新的特性来方便的达到这个效果--Fragment类.Fragment类似一个嵌套Activity,可以定义自己的layout和自己的生命周期. 多个Fragm

Android TabHost(简易用法)

前言 欢迎大家我分享和推荐好用的代码段~~ 声明          欢迎转载,但请保留文章原始出处: CSDN:http://www.csdn.net 雨季o莫忧离:http://blog.csdn.net/luckkof 正文 Tab应用的结构 TabHost的Activity的结构如下: <?xml version="1.0" encoding="utf-8"?> <!-- 定义TabHost组件 --> <LinearLayout

Android之Adapter用法总结

http://blog.csdn.net/fznpcy/article/details/8658155 Android之Adapter用法总结 1.概念 Adapter是连接后端数据和前端显示的适配器接口,是数据和UI(View)之间一个重要的纽带.在常见的View(List View,Grid View)等地方都需要用到Adapter.如下图直观的表达了Data.Adapter.View三者的关系: Android中所有的Adapter一览: 由图可以看到在Android中与Adapter有关

Android之Adapter用法总结(转)

Android之Adapter用法总结 1.概念 Adapter是连接后端数据和前端显示的适配器接口,是数据和UI(View)之间一个重要的纽带.在常见的View(List View,Grid View)等地方都需要用到Adapter.如下图直观的表达了Data.Adapter.View三者的关系: Android中所有的Adapter一览: 由图可以看到在Android中与Adapter有关的所有接口.类的完整层级图.在我们使用过程中可以根据自己的需求实现接口或者继承类进行一定的扩展.比较常用

Android ListView的用法

ListView是比较常用的控件,但一直都觉得创建ListView步骤有点繁琐,故在此总结一下,方便查阅. 程序效果是实现一个ListView,ListView里面有标题,内容和图片,并加入点击和长按响应. 首先在xml里面定义一个ListView Xml代码   <?xml version="1.0" encoding="utf-8"?> <LinearLayout android:id="@+id/LinearLayout01&quo

Android onTouchListener的用法

OnTouchListener接口是用来处理手机屏幕事件的监听接口,当为View的范围内触摸按下.抬起或滑动等动作时都会触发该事件.该接口中的监听方法签名如下.Java代码:public boolean onTouch(View v, MotionEvent event) 参数v:参数v同样为事件源对象.       参数event:参数event为事件封装类的对象,其中封装了触发事件的详细信息,同样包括事件的类型.触发时间等信息.       节中介绍了一个在屏幕中拖动矩形移动的案例,本节将继

Android之Adapter用法总结-(转)

Android之Adapter用法总结 1.概念 Adapter是连接后端数据和前端显示的适配器接口,是数据和UI(View)之间一个重要的纽带.在常见的View(List View,Grid View)等地方都需要用到Adapter.如下图直观的表达了Data.Adapter.View三者的关系: Android中所有的Adapter一览: 由图可以看到在Android中与Adapter有关的所有接口.类的完整层级图.在我们使用过程中可以根据自己的需求实现接口或者继承类进行一定的扩展.比较常用