Android--TextView第一个单词大写

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

}

 

posted @ 2014-10-29 15:16  crane13  阅读(785)  评论(0编辑  收藏  举报