给TextView的部分字符串加超链接

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

//1找到控件

tv = (TextView) findViewById(R.id.spantest);

//2 组合好可以点击的字符串

String all = new String(getResources().getString(R.string.testall));

String test1 = new String(getResources().getString(R.string.test1));

String test2 = new String(getResources().getString(R.string.test2));

String format = String.format(all,test1,test2);

int index1 = format.indexOf(test1);

int index2 = format.indexOf(test2);

System.out.println("index1"+index1);

System.out.println("index2"+index2);

SpannableString ss = new SpannableString(format);

ss.setSpan(new ClickableSpan() {

@Override

public void onClick(View widget) {

System.out.println("test 1
click"
);

}

},index1,index1+test1.length(),
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);

//设置文字的前景色

ss.setSpan(new ForegroundColorSpan(Color.RED),index1,index1+test1.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);

//设置下划线文字

ss.setSpan(new UnderlineSpan(), index1,index1+test1.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);

ss.setSpan(new ClickableSpan() {

@Override

public void onClick(View widget) {

System.out.println("test 2
click"
);

}

},index2,index2+test2.length(),Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);

//3 将字符串设置为文本

tv.setText(ss);

//4让文本的超链接起作用

tv.setMovementMethod(LinkMovementMethod.getInstance());

}

时间: 2024-10-12 17:10:58

给TextView的部分字符串加超链接的相关文章

android中使用jni对字符串加解密实现分析

android中使用jni对字符串加解密实现分析 最近项目有个需求,就是要对用户的敏感信息进行加密处理,比如用户的账户密码,手机号等私密信息.在java中,就对字符串的加解密我们可以使用AES算法加密字符串,使用它的好处就不必多说了,但我们又知道android的源代码是可以被反编译的,所以使用纯Java方式的AES加密是不安全的,所以想到了使用android中的jni来对字符串加解密处理,它会产生一个.so文件,更重要的是它通过C/C++代码实现,所以安全行比较高,它可以被反编译成机器码,但几乎

Android TextView内容过长加省略号,点击显示全部内容

在Android TextView中有个内容过长加省略号的属性,即ellipsize,用法如下: 在xml中: android:ellipsize="end"   省略号在结尾 android:ellipsize="start" 省略号在开头 android:ellipsize="middle"   省略号在中间 android:ellipsize="marquee"  跑马灯 最好加一个TextView显示行数的约束,例如:

C++中的数组array和vector,lambda表达式,C字符串加操作,C++中新类型数组(数组缓存),多元数组,new缓冲

 使用C++风格的数组,不需要管理内存. array要注意不要溢出,因为它是栈上开辟内存. array适用于任何类型 #include<iostream> #include<array> #include<vector>   //C++的标准库 #include<string>   //C++字符串 #include <stdlib.h> using  std::array; //静态数组,栈上 using std::vector; //动态

Android中TextView内容过长加省略号

      textview中有个内容过长加省略号的属性,即ellipsize,用法如下: 在xml中 Android:ellipsize = "end"   省略号在结尾 android:ellipsize = "start" 省略号在开头 android:ellipsize = "middle"     省略号在中间 android:ellipsize = "marquee"  跑马灯 最好加一个约束android:sin

Android jni aes加解密,实现文件的加解密,具体实现可以自行修改,上面的代码为简单介绍,下面的是JNI端实现文件加解密,可以修改为字符串加解密

#include "aes.h" #include "modes.h" #include "e_os2.h" #include "aes_locl.h" #include "opensslconf.h" AES_KEY aes; //aes cbc模式加解密用到的向量 unsigned char iv[AES_BLOCK_SIZE]; for (i = 0; i < AES_BLOCK_SIZE; i

c#字符串加载wpf控件模板代码 - 简书

原文:c#字符串加载wpf控件模板代码 - 简书 ResourceManager resManagerA = new ResourceManager("cn.qssq666.Properties.Resources", typeof(cn.ijiami.keyboard.Properties.Resources).Assembly); string astring = resManagerA.GetString("axml_test"); LogUtil.write

11 怎么给字符串加索引

11 怎么给字符串加索引 现在,几乎所有的系统都支持邮箱登录,如何在邮箱这样的字段上建立合理的索引? 用户表定义 mysql> create table SUser( ID bigint unsigned primary key, email varchar(64), ... )engine=innodb; 由于要使用邮箱登录,所有业务代码中一定会出现类似这样的语句 mysql> select f1, f2 from SUser where email='xxx'; 在email上创建索引 m

Mysql性能优化:如何给字符串加索引?

原文:Mysql性能优化:如何给字符串加索引? 导读 现代大部分的登录系统都支持邮箱.手机号码登录两种方式,那么如何在邮箱或者手机号码这个字符串上建立索引才能保证性能最佳呢? 今天这篇文章就来探讨一下在Mysql中如何给一个字符串加索引才能达到性能最佳. 本文首发于作者的微信公众号[码猿技术专栏],原创不易,喜欢的朋友支持一下,谢谢!!! 陈某将会从什么是前缀索引.前缀索引和普通索引的比较.如何建丽最佳性能的前缀索引.前缀索引对覆盖索引的影响这几段来讲. 前缀索引 顾名思义,对于列值较长,比如B

华为OJ:字符串加解密

题目描述 1.对输入的字符串进行加解密,并输出. 2加密方法为: 当内容是英文字母时则用该英文字母的后一个字母替换,同时字母变换大小写,如字母a时则替换为B:字母Z时则替换为a: 当内容是数字时则把该数字加1,如0替换1,1替换2,9替换0: 其他字符不做变化. 3.解密方法为加密的逆过程. 接口描述: 实现接口,每个接口实现1个基本操作: void Encrypt (char aucPassword[], char aucResult[]):在该函数中实现字符串加密并输出 说明: 1.字符串以