//SpannableString 不需要导入任何的依赖
public class MainActivity extends AppCompatActivity {
private TextView textview;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textview = (TextView) findViewById(R.id.textview);
String icon = "icon";
String from = "张全蛋";
String to = "赵铁柱";
String txt = String.format("%s回复@%s:我是富士康3号%s流水线的张全蛋," +
"英文名叫Micheal Jack,发文名叫helodie Jaqueline。", from, to, icon);
//实例化对象
SpannableString spannable = new SpannableString(txt);
//点击事件,好像无效,自行百度
spannable.setSpan(new ClickableSpan() {
@Override
public void onClick(View widget) {
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(MainActivity.this, "点击了", Toast.LENGTH_SHORT).show();
}
});
}
}, txt.indexOf(icon), txt.indexOf(icon) + icon.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
//修改文字颜色
spannable.setSpan(new ForegroundColorSpan(Color.parseColor("#ff0000")), txt.indexOf(icon), txt.indexOf(icon) + icon.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
//设置文字背景颜色
spannable.setSpan(new BackgroundColorSpan(Color.parseColor("#ffff00")), txt.indexOf(from), txt.indexOf(from) + from.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
//用图片替换文字
//bitmap 格式工厂拿到图片
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.am6);
//把图片设置成Drawable格式
BitmapDrawable drawable = new BitmapDrawable(getResources(), bitmap);
//设置图片的边界,也可以理解成图片的大小,后两个参数也可以设置成数字,比如10,20或20,20
drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());
//把图片设置到指定位置
spannable.setSpan(new ImageSpan(drawable), txt.indexOf(icon), txt.indexOf(icon) + icon.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
//设置文字样式,这里是加粗
spannable.setSpan(new StyleSpan(Typeface.BOLD), txt.indexOf(to), txt.indexOf(to) + to.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
//添加下划线
spannable.setSpan(new UnderlineSpan(), txt.indexOf(to), txt.indexOf(to) + to.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
//最后把这些都设置到TextView上面
textview.setText(spannable);
}
}