博客
关于我
解决:android TextView上响应部分文字的事件
阅读量:363 次
发布时间:2019-03-05

本文共 1889 字,大约阅读时间需要 6 分钟。

运行结果如下:

TtActivity.java

public   class  TtActivity extends Activity {

     /* * Called when the activity is first created.  */ 
     private  TextView  tv;
     static  Context ctx = null ;
    @Override
     public   void  onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        ctx = this ;
        tv  =  (TextView) findViewById(R.id.tv); 
        //  String htmlLinkText= " <a href=\" http://www.csdn.net/CAIYUNFREEDOM/\"><u>我的CSDN博客 </u></a>";      
      //  tv.setText(Html.fromHtml(htmlLinkText));
        tv.setMovementMethod(LinkMovementMethod.getInstance());   
        CharSequence text  =  tv.getText();   
         if (text instanceof Spannable){   
             int  end  =  text.length();   
            Spannable sp  =  (Spannable)tv.getText();   
            URLSpan[] urls = sp.getSpans( 0 , end, URLSpan. class );    
            SpannableStringBuilder style = new  SpannableStringBuilder(text);   
            style.clearSpans(); // should clear old spans    
             for (URLSpan url : urls){   
                MyURLSpan myURLSpan  =   new  MyURLSpan(url.getURL());   
                style.setSpan(myURLSpan,sp.getSpanStart(url),sp.getSpanEnd(url),Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);   
            }   
            tv.setText(style);   
        }         
    }
    
     private   static   class  MyURLSpan extends ClickableSpan{   
          
         private  String mUrl;   
        MyURLSpan(String url) {   
            mUrl  = url;   
        }   
        @Override
         public   void  onClick(View widget) {
             //  TODO Auto-generated method stub 
            Toast.makeText(ctx,  ""+mUrl ,Toast.LENGTH_SHORT).show();
        }   
    }

main.xml

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<TextView  
android:id="@+id/tv"
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="@string/hello"
    />
</LinearLayout>

strings.xml

<?xml version="1.0" encoding="utf-8"?>

<resources>
     <string name="hello">局部事件1  <a href="1" ><u>hello1</u></a>,事件2<a href="2" ><u>hello2</u></a></string>
    <string name="app_name">Tt</string>
</resources>

转载地址:http://zupg.baihongyu.com/

你可能感兴趣的文章
【Tool】如何使用 Uniflash 烧写 WIFI 芯片 CC3200
查看>>
copy_{to, from}_user()的思考
查看>>
Web前端安全策略之CSRF的攻击与防御
查看>>
5分钟快速了解下CSS4 color-adjust属性
查看>>
纯客户端页面关键字搜索高亮jQuery插件
查看>>
秋月何时了,CSS3 border-radius知多少?
查看>>
linux运维中常用的命令
查看>>
M1芯片的macbook安装王者荣耀,原神,崩坏方法
查看>>
CentOS7更改成阿里云的源
查看>>
Java温故而知新-反射机制
查看>>
Netty3事件处理顺序问题
查看>>
eclipse引用sun.misc开头的类
查看>>
firefox中angular2嵌套发送请求问题
查看>>
Netty 知识整理 (2)HttpServerCodec和HttpObjectAggregator用法
查看>>
【Linux】service命令
查看>>
【mysql】事务隔离与mvcc的误区
查看>>
【mybatis3】调试/断点打印日志
查看>>
【linux】pid file解读
查看>>
Leetcode 102题.从中序与后序遍历序列构造二叉树
查看>>
C++
查看>>