博客
关于我
解决:android TextView上响应部分文字的事件
阅读量:362 次
发布时间: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/

你可能感兴趣的文章
LeetCode122.买卖股票的最佳时机2Golang版
查看>>
传感器驱动
查看>>
LeetCode 训练场:977. 有序数组的平方
查看>>
程序员面试金典:面试题 02.03. 删除中间节点
查看>>
还在花冤枉钱找人做电子签名?看这儿,教你制作纯手写电子签名
查看>>
Linux 文件系统分层标准(FHS)
查看>>
Java 知识点总结篇(2)
查看>>
Python 知识点总结篇(2)
查看>>
Python 知识点总结篇(3)
查看>>
如何利用 Beautiful Soup 爬取网页数据
查看>>
Numpy 如何操作数组
查看>>
Win10 环境下安装压缩包版本 MySQL-8.0.13
查看>>
爬取网易科技滚动新闻
查看>>
vuex modules
查看>>
react hook的使用
查看>>
vue父子组件传参的4种方式
查看>>
react 使用 useEffect 及踩坑
查看>>
中缀表达式转后缀表达式
查看>>
Java笔记:单链表
查看>>
Java基础题:小根堆为8,15,10,21,34,16,12,删除关键字8之后需重建堆,需要的比较次数为?
查看>>