Android--TextView第一个单词大写
2024-09-20 19:47:08
自定义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);
} }
最新文章
- git本地有修改如何强制更新
- cp命令
- windows系统下在dos命令行kill掉被占用的pid (转)
- barabasilab-networkScience学习笔记1-网络科学简介
- CSS中!important的优先级
- FMDB基本应用
- mysql in 子查询 效率慢 优化(转)
- 浅谈K-SVD
- 2013年9月份第1周51Aspx源码发布详情
- java和javascript真的有关系=。=
- 【转】C++类中对同类对象private成员访问
- Standard Attachments in Oracle Form 标准附件
- CentOS6.5一键安装MySQL5.5.32(源码编译)
- 关于org.openqa.selenium.ElementNotVisibleException
- C++11:强类型枚举(enum)
- Map 基础用法
- JS获取前天、昨天、今天、明天、后天的时间
- python之创建文件写入内容
- 分割list,将集合按规定个数分为n个部分。
- 关于istream_iterator<;int>;(cin)和istream_iterator<;int>;()的一点分析
热门文章
- CSS块元素、行内元素、行内块元素的转换
- 退役II次后做题记录
- 55、Spark Streaming:updateStateByKey以及基于缓存的实时wordcount程序
- js中判断变量不为空或null
- MongoDB 高级查询_aggregate聚合管道
- 刷题记录:[CISCN2019 东北赛区 Day2 Web3]Point System
- C# 最简单的使程序单进程运行的方法
- 堆排序Heapsort的Java和C代码
- 记某app内购破解 – 安卓逆向菜鸟的初体验
- Python3基础 函数 __name__ 得到引用所指向的真正名字