博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android--TextView第一个单词大写
阅读量:4318 次
发布时间:2019-06-06

本文共 2259 字,大约阅读时间需要 7 分钟。

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

 

转载于:https://www.cnblogs.com/crane13/p/4059623.html

你可能感兴趣的文章
ubuntu更改主机名
查看>>
WordCount优化
查看>>
回调函数
查看>>
[转]protobuf-2.5.0.tar.gz的下载与安装
查看>>
关于IT概念的一些思考
查看>>
java开发必备的工具
查看>>
在ASP.NET Atlas中调用Web Service——创建Mashup调用远端Web Service(Google Search实例)...
查看>>
springboot(@Service,@Mapper)注解失效导致无法注入service和mapper
查看>>
连接Sql server
查看>>
Log4Net 自定义级别,分别记录到不同的文件中
查看>>
hdu 1068 Girls and Boys(二分图匹配)
查看>>
[转]Java中Date转换大全,返回yyyy-MM-dd的Date类型
查看>>
sublimetext常用快捷键(转)
查看>>
12306购票助手开源啦
查看>>
centos中的配置文件 分类: B3_LINUX ...
查看>>
1.找两个数下标Two Sum
查看>>
牛客~~wannafly挑战赛19~A 队列
查看>>
MYSQL GTID使用运维介绍(转)
查看>>
5 -- Hibernate的基本用法 --2 2 Hibernate的数据库操作
查看>>
RAID
查看>>