zoukankan      html  css  js  c++  java
  • 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);
        }
    
    }
  • 相关阅读:
    Hibernate学习笔记
    Servlet:从入门到实战学习(3)---Servlet实例【图文】
    Servlet:从入门到实战学习(2)---Servlet生命周期
    Servlet:从入门到实战学习(1)---全·环境配置
    java复习(9)---数据库JDBC
    java复习(8)---I/O
    java复习(7)---集合类、泛型
    java复习(6)---异常处理
    C#尝试读取或写入受保护的内存。这通常指示其他内存已损坏
    C# TTS 文本转语音中断实现方式
  • 原文地址:https://www.cnblogs.com/crane13/p/4059623.html
Copyright © 2011-2022 走看看