自定义TextView:

public class FirstBoldTextView extends TextView
{
private boolean firstWordBold = false;
private String str; public FirstBoldTextView(Context context, AttributeSet attrs, int defStyle)
{
super(context, attrs, defStyle);
// TODO Auto-generated constructor stub
} public FirstBoldTextView(Context context, AttributeSet attrs)
{
super(context, attrs);
// TODO Auto-generated constructor stub
} public FirstBoldTextView(Context context)
{
super(context);
} @SuppressLint("DrawAllocation")
@Override
protected void onDraw(Canvas canvas)
{
str = getText().toString().trim();
if (!TextUtils.isEmpty(str) && !firstWordBold)
{
SpannableStringBuilder ssb = new SpannableStringBuilder(str);
ssb.setSpan(new FirstWordBoldSpan(Typeface.NORMAL), 0, str.indexOf(" "), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
setText(ssb);
setMovementMethod(LinkMovementMethod.getInstance());
firstWordBold = true;
}
super.onDraw(canvas);
} @Override
protected void onTextChanged(CharSequence text, int start, int lengthBefore, int lengthAfter)
{
super.onTextChanged(text, start, lengthBefore, lengthAfter);
firstWordBold = false;
}
}

其中FirstWordBoldSpan代码如下:

public class FirstWordBoldSpan extends StyleSpan
{ public FirstWordBoldSpan(int style)
{
super(style);
} @Override
public int describeContents()
{
// TODO Auto-generated method stub
return super.describeContents();
} @Override
public int getSpanTypeId()
{
return super.getSpanTypeId();
} @Override
public int getStyle()
{
return super.getStyle();
} @Override
public void updateDrawState(TextPaint ds)
{
ds.setFakeBoldText(true);
super.updateDrawState(ds);
} @Override
public void updateMeasureState(TextPaint paint)
{
paint.setFakeBoldText(true);
super.updateMeasureState(paint);
} @Override
public void writeToParcel(Parcel dest, int flags)
{
// TODO Auto-generated method stub
super.writeToParcel(dest, flags);
} }

最新文章

  1. git本地有修改如何强制更新
  2. cp命令
  3. windows系统下在dos命令行kill掉被占用的pid (转)
  4. barabasilab-networkScience学习笔记1-网络科学简介
  5. CSS中!important的优先级
  6. FMDB基本应用
  7. mysql in 子查询 效率慢 优化(转)
  8. 浅谈K-SVD
  9. 2013年9月份第1周51Aspx源码发布详情
  10. java和javascript真的有关系=。=
  11. 【转】C++类中对同类对象private成员访问
  12. Standard Attachments in Oracle Form 标准附件
  13. CentOS6.5一键安装MySQL5.5.32(源码编译)
  14. 关于org.openqa.selenium.ElementNotVisibleException
  15. C++11:强类型枚举(enum)
  16. Map 基础用法
  17. JS获取前天、昨天、今天、明天、后天的时间
  18. python之创建文件写入内容
  19. 分割list,将集合按规定个数分为n个部分。
  20. 关于istream_iterator<int>(cin)和istream_iterator<int>()的一点分析

热门文章

  1. CSS块元素、行内元素、行内块元素的转换
  2. 退役II次后做题记录
  3. 55、Spark Streaming:updateStateByKey以及基于缓存的实时wordcount程序
  4. js中判断变量不为空或null
  5. MongoDB 高级查询_aggregate聚合管道
  6. 刷题记录:[CISCN2019 东北赛区 Day2 Web3]Point System
  7. C# 最简单的使程序单进程运行的方法
  8. 堆排序Heapsort的Java和C代码
  9. 记某app内购破解 – 安卓逆向菜鸟的初体验
  10. Python3基础 函数 __name__ 得到引用所指向的真正名字