自定义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);
} }

Android--TextView第一个单词大写的更多相关文章

  1. Android零基础入门第17节:Android开发第一个控件,TextView属性和方法大全

    原文:Android零基础入门第17节:Android开发第一个控件,TextView属性和方法大全 前面简单学习了一些Android UI的一些基础知识,那么接下来我们一起来详细学习Android的 ...

  2. Android TextView和EditText属性详解

    TextView属性详解: autoLink设置 是否当文本为URL链接/email/电话号码/map时,文本显示为可点击的链接.可选值(none/web /email/phone/map/all) ...

  3. android TextView 添加下划线

    android Textview加下划线 由于新做的一个项目要求有字体带下划线效果,当时看了下其实可以通过图片伪造出那种视觉效果.但是为了体现点技术含量,于是我想用Textview带下划线的效果.方法 ...

  4. Android TextView属性

    android:autoLink设置是否当文本为URL链接/email/电话号码/map时,文本显示为可点击的链接.可选值(none/web/email/phone/map/all)android:a ...

  5. 20172327 2018-2019-1 《第一行代码Android》第一章学习总结

    学号 2018-2019-1 <第一行代码Android>第一章学习总结 教材学习内容总结 - Android系统架构: 1.Linux内核层 Android系统是基于Linux内核的,这 ...

  6. Android textview及其子类

    属性: android:autoLink设置是否当文本为URL链接/email/电话号码/map时,文本显示为可点击的链接.可选值(none/web/email/phone/map/all) andr ...

  7. Android——TextView属性XML详解

    Android_TextView属性XML详解 博客分类: android   属性名称    描述 android:autoLink    设置是否当文本为URL链接/email/电话号码/map时 ...

  8. Android的第一个程序

    摘要:对于安卓的历史和安卓需要学习哪些东西以及怎么安卓环境,我就不在这里多说了,网上一大推. 我这里主要说的就是代码.一些基础的安卓知识.在接下来的每个月里我都会不定期写一些博客给初学者学习,我会尽量 ...

  9. Android TextView 添加下划线的几种方式

    总结起来大概有5种做法:  1. 将要处理的文字写到一个资源文件,如string.xml(使用html用法格式化)   2. 当文字中出现URL.E-mail.电话号码等的时候,可以将TextView ...

随机推荐

  1. HDU 1542.Atlantis-线段树求矩形面积并(离散化、扫描线/线段树)-贴模板

    好久没写过博客了,这学期不是很有热情去写博客,写过的题也懒得写题解.现在来水一水博客,写一下若干年前的题目的题解. Atlantis Time Limit: 2000/1000 MS (Java/Ot ...

  2. Error:(1, 1) java: 非法字符: '\ufeff'

    找到 java 文件. 使用 notepad 打开,转码,并保存即可.

  3. mysql 组合聚集函数

    mysql> select * from table1; +----------+------------+-----+---------------------+ | name_new | t ...

  4. Eclipse 高亮显示(pydev 编辑 python)

    因为是使用pydev编辑的python,所以需要修改(pydev)的属性. Window->Preferences->General->Editors->Text Editor ...

  5. K8S API对象

    POD Pod是在K8s集群中运行部署应用或服务的最小单元,它是可以支持多容器的.Pod的设计理念是支持多个容器在一个Pod中共享网络地址和文件系统,可以通过进程间通信和文件共享这种简单高效的方式组合 ...

  6. 基于Docker部署ETCD集群

    基于Docker部署ETCD集群 关于ETCD要不要使用TLS? 首先TLS的目的是为了鉴权为了防止别人任意的连接上你的etcd集群.其实意思就是说如果你要放到公网上的ETCD集群,并开放端口,我建议 ...

  7. javassist使用全解析

    Java 字节码以二进制的形式存储在 .class 文件中,每一个 .class 文件包含一个 Java 类或接口.Javaassist 就是一个用来 处理 Java 字节码的类库.它可以在一个已经编 ...

  8. redis之 主从复制和哨兵

    一.Redis主从复制 主从复制:主节点负责写数据,从节点负责读数据,主节点定期把数据同步到从节点保证数据的一致性 1. 主从复制的相关操作 a,配置主从复制方式一.新增redis6380.conf, ...

  9. m4a 转MP3

    import os for filename in os.listdir(r'.'): print filename os.rename(filename,filename.replace(' ',' ...

  10. 【vue】npm、node版本查看及npm常用命令

    1,版本查看 node -v npm -v 2,修改NPM的缓存目录和全局目录路径 D盘node目录下创建两个目录,分别是node_cache和node_global,这是用来放安装过程的缓存文件以及 ...