span,翻译是范围的意思? 反正就是为一段文本设置特殊效果。如超链接、带背景等。
基本语法
TextView text1 = (TextView) findViewById(R.id.text1);
SpannableString span1 = new SpannableString("好好学习,天天向上");
span1.setSpan(new ClickableSpan() {
@Override
public void onClick(View widget) {
System.out.println(1111111);
}
}, 0, span1.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
text1.setText(span1);
text1.setFocusable(true);
text1.setMovementMethod(LinkMovementMethod.getInstance());
TextView text2 = (TextView) findViewById(R.id.text2);
SpannableStringBuilder span2 = new SpannableStringBuilder("坚持就是胜利");
span2.setSpan(new BackgroundColorSpan(Color.YELLOW), 0, 3, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
text2.setText(span2);
public void onClick_RandomFace(View view)
{
// 随机产生1至9的整数
int randomId = 1 + new Random().nextInt(9);
try
{
// 根据随机产生的1至9的整数从R.drawable类中获得相应资源ID(静态变量)的Field对象
Field field = R.drawable.class.getDeclaredField("face" + randomId);
// 获得资源ID的值,也就是静态变量的值
int resourceId = Integer.parseInt(field.get(null).toString());
// 根据资源ID获得资源图像的Bitmap对象
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), resourceId);
// 根据Bitmap对象创建ImageSpan对象
ImageSpan imageSpan = new ImageSpan(this, bitmap);
// 创建一个SpannableString对象,以便插入用ImageSpan对象封装的图像
SpannableString spannableString = new SpannableString("face");
// 用ImageSpan对象替换face
spannableString.setSpan(imageSpan, 0, 4, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
// 将随机获得的图像追加到EditText控件的最后
edittext.append(spannableString);
}
catch (Exception e)
{
}
}
用处:
数据库中有多个数据时,输入部分数据,我们可将匹配的数据查出,并将匹配部分以特殊显示
对textview的某部分进行选择,将选择部分特殊显示