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);
        }
    
    }
  • 相关阅读:
    bzoj2819: Nim
    bzoj4864: [BeiJing 2017 Wc]神秘物质
    【转】 随机梯度下降(Stochastic gradient descent)和 批量梯度下降(Batch gradient descent )的公式对比、实现对比
    【转】梯度下降算法原理
    梯度下降算法的一点认识(Ng第一课)
    快速理解webStroage
    Css选择器实例
    Canvas实例
    HTML5中的Canvas
    骰子效果实例
  • 原文地址:https://www.cnblogs.com/crane13/p/4059623.html
Copyright © 2011-2022 走看看