TextView的使用

1,TextView的简单使用

  • 1,简单属性介绍
        android:text="hello"  设置文本
        android:textSize="20sp"  设置字体大小,单位是sp
        android:textColor="#ff0000"   设置字体颜色
        android:textStyle="normal"  设置字体的样式    (可以组合使用)
          normal 正常字体 (默认)
          italic 斜体
          bold加粗
          android:singleLine="true"设置单行显示
          android:lines="1"        设置文本占多少行
          android:maxLines="5"     设置最多占多少行
           表示裁剪文本
          android:ellipsize="none"
            none不裁剪
            start 省略文本前部,用省略号表示
            middle 省略中间
            end   省略末尾
             跑马灯效果
            marquee 滚动的

简单跑马灯效果的实现:

<TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="#ffcccc"
            android:text="苹果公司今天在纽约股市收盘后发布了2016财年第三财季的财报,营收和利润不出意外的下滑,不过因为总营收和每股收益超过了市场预期,苹果股票在目前的盘后交易中上涨了7.21%,重回100美元以上"
            android:textSize="20sp"
            android:textColor="#ff0000"
            android:textStyle="italic|bold"
            android:singleLine="true"
            android:elevation="5dp"
            android:ellipsize="marquee"
            android:focusable="true"
            android:focusableInTouchMode="true"
            />
  • 2,所有属性
    1、android:lineSpacingExtra
    设置行间距,如”3dp”。
    2、android:lineSpacingMultiplier
    设置行间距的倍数,如”1.2″。
    4,所有属性
    android:ems 设置TextView的宽度为N个字符的宽度。
    android:maxems 设置TextView的宽度为最长为N个字符的宽度。与ems同时使用时覆盖ems选项。
    android:minems 设置TextView的宽度为最短为N个字符的宽度。与ems同时使用时覆盖ems选项。
    android:maxLength 限制输入字符数。如设置为5,那么仅可以输入5个汉字/数字/英文字母。
    android:lines 设置文本的行数,设置两行就显示两行,即使第二行没有数据。
    android:maxLines 设置文本的最大显示行数,与width或者layout_width结合使用,超出部分自动换行,超出行数将不显示。
    android:minLines 设置文本的最小行数,与lines类似。
    android:lineSpacingExtra 设置行间距。
    android:lineSpacingMultiplier 设置行间距的倍数。如”1.2”
    android:numeric 如果被设置,该TextView有一个数字输入法。有如下值设置:integer正整数、signed带符号整数、decimal带小数点浮点数。
    android:password 以小点”.”显示文本
    android:phoneNumber 设置为电话号码的输入方式。
    android:singleLine 设置单行显示。如果和layout_width一起使用,当文本不能全部显示时,后面用“…”来表示。如android:text=”test_ singleLine ” android:singleLine=”true” android:layout_width=”20dp”将只显示“t…”。如果不设置singleLine或者设置为false,文本将自动换行

    android:textAppearance 设置文字外观。如“?android:attr/textAppearanceLargeInverse”这里引用的是系统自带的一个外观,?表示系统是否有这种外观,否则使用默认的外观。可设置的值如下:textAppearanceButton/textAppearanceInverse/textAppearanceLarge/textAppearanceLargeInverse/textAppearanceMedium/textAppearanceMediumInverse/textAppearanceSmall/textAppearanceSmallInverse
    android:textColor 设置文本颜色
    android:textColorHighlight 被选中文字的底色,默认为蓝色
    android:textColorHint 设置提示信息文字的颜色,默认为灰色。与hint一起使用。
    android:textColorLink 文字链接的颜色.
    android:textScaleX 设置文字之间间隔,默认为1.0f。参见TextView的截图。
    android:textSize 设置文字大小,推荐度量单位”sp”,如”15sp”
    android:textStyle 设置字形[bold(粗体) 0, italic(斜体) 1, bolditalic(又粗又斜) 2] 可以设置一个或多个,用“|”隔开
    android:typeface 设置文本字体,必须是以下常量值之一:normal 0, sans 1, serif 2, monospace(等宽字体) 3]
    android:height 设置文本区域的高度,支持度量单位:px(像素)/dp/sp/in/mm(毫米)
    android:maxHeight 设置文本区域的最大高度
    android:minHeight 设置文本区域的最小高度
    android:width 设置文本区域的宽度,支持度量单位:px(像素)/dp/sp/in/mm(毫米),与layout_width的区别看这里。
    android:maxWidth 设置文本区域的最大宽度
    android:minWidth 设置文本区域的最小宽度
2,其他方面介绍
  • 1,改变部分文字前景色和部分文字背景色
 //部分文字前景色
        //1,获取全部文字
        String srcString = mTvFore.getText().toString();
        SpannableStringBuilder spannableStringBuilder = new SpannableStringBuilder(srcString);
        spannableStringBuilder.setSpan(new ForegroundColorSpan(Color.RED),
                2,4, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
        spannableStringBuilder.setSpan(new ForegroundColorSpan(Color.YELLOW),
                1,2, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
        //改变部分文字的背景色
        spannableStringBuilder.setSpan(new BackgroundColorSpan(Color.GREEN)
        ,4,6,Spanned.SPAN_EXCLUSIVE_INCLUSIVE);
        mTvFore.setText(spannableStringBuilder);
  • 2,修改部分字体的大小
 //修改部分文字的大小
        String sizeString = mTvSize.getText().toString();
        SpannableString sizeSpan = new SpannableString(sizeString);
        //1.5f修改文字的倍数
        sizeSpan.setSpan(new RelativeSizeSpan(1.5f),1,2,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
        sizeSpan.setSpan(new ForegroundColorSpan(Color.RED), 2, 4, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
        mTvSize.setText(sizeSpan);
  • 3,设置下划线和中划线
tvOne.getPaint().setFlags(Paint. UNDERLINE_TEXT_FLAG ); //下划线
tvOne.getPaint().setAntiAlias(true);//抗锯齿

tvOne.getPaint().setFlags(Paint.STRIKE_THRU_TEXT_FLAG);//中划线
两条线只能设置一条,textView.getPaint().setFlags(0);  // 取消设置的的划线
  • 4,设置字体加粗
textView.setTypeface(Typeface.defaultFromStyle(Typeface.BOLD));//加粗
textView.getPaint().setFakeBoldText(true);//加粗

    //android中为textview动态设置字体为粗体
        textView.setTypeface(Typeface.defaultFromStyle(Typeface.BOLD));
    }

    private void setTextUnBold(TextView textView) {
        //设置不为加粗
        textView.setTypeface(Typeface.defaultFromStyle(Typeface.NORMAL));
3,封装工具类

public class TvUtils {

    /**
     * 富文本设置字体大小
     *
     * @param srcString
     * @param tartgetString
     * @param txtSize
     * @return
     */
    public static SpannableString setTextPartTextSize(String srcString, String tartgetString, int txtSize) {
        int position = srcString.indexOf(tartgetString);
        SpannableString mSp = new SpannableString(srcString);
        if (position >= 0) {
            mSp.setSpan(new AbsoluteSizeSpan(txtSize, false), position, position + tartgetString.length(),
                    Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
        }
        return mSp;
    }

    /**富文本设置字体颜色和大小
     * @param srcString
     * @param tartgetString
     * @param targetColor
     * @param txtSizeDp
     * @return
     */
    public static SpannableString setTextPartTextSize(String srcString, String tartgetString, int targetColor, int txtSizeDp) {
        int position = srcString.indexOf(tartgetString);
        SpannableString mSp = new SpannableString(srcString);
        if (position >= 0) {
            mSp.setSpan(new AbsoluteSizeSpan(txtSizeDp, true), position, position + tartgetString.length(),
                    Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
            mSp.setSpan(new ForegroundColorSpan(targetColor), position, position + tartgetString.length(),
                    Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
        }
        return mSp;
    }

    /**富文本设置部分文字颜色
     * @param srcString
     * @param tartgetString
     * @param targetColor
     * @return
     */
    public static SpannableString setTextPartColor(String srcString,String tartgetString,int targetColor){
        int position = srcString.indexOf(tartgetString);
        SpannableString mSp = new SpannableString(srcString);
        if (position >= 0) {
            mSp.setSpan(new ForegroundColorSpan(targetColor), position, position + tartgetString.length(),
                    Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
        }
        return mSp;
    }

    /**富文本设置部分文字背景色
     * @param srcString
     * @param tartgetString
     * @param targetColor
     * @return
     */
    public static SpannableString setTextPartBg(String srcString,String tartgetString,int targetColor){
        int position = srcString.indexOf(tartgetString);
        SpannableString mSp = new SpannableString(srcString);
        if (position >= 0) {
            mSp.setSpan(new BackgroundColorSpan(targetColor), position, position + tartgetString.length(),
                    Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
        }
        return mSp;
    }

    /**设置中划线
     * @param src
     * @param start
     * @param end
     * @return
     */
    public static SpannableString setStrikethrough(String src,int start,int end){
        SpannableString spannableString = new SpannableString(src);
        StrikethroughSpan strikethroughSpan = new StrikethroughSpan();
        spannableString.setSpan(strikethroughSpan, start,end, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
        return spannableString;
    }

    /**设置下划线
     * @param src
     * @param start
     * @param end
     * @return
     */
    public static SpannableString setUnderline(String src,int start,int end){
        SpannableString spannableString = new SpannableString(src);
        UnderlineSpan underlineSpan = new UnderlineSpan();
        spannableString.setSpan(underlineSpan, start,end, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
        return spannableString;
    }

    /**同时设置下划线和中划线
     * @param src
     * @param up
     * @param down
     * @return
     */
    public static SpannableString setUpDownLine(String src,String up,String down){
        int uPosition = src.indexOf(up);
        int dPosition = src.indexOf(down);
        SpannableString mSp = new SpannableString(src);
        UnderlineSpan underlineSpan = new UnderlineSpan();
        StrikethroughSpan strikethroughSpan = new StrikethroughSpan();
        if (uPosition >= 0) {
            mSp.setSpan(strikethroughSpan, uPosition,uPosition+up.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
        }
        if (dPosition >= 0) {
            mSp.setSpan(underlineSpan, dPosition,dPosition+down.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
        }
        return mSp;
    }


    /**设置上标
     * @param src
     * @param start
     * @param end
     * @return
     */
    public static SpannableString setUpScript(String src,int start,int end){
        SpannableString spannableString = new SpannableString(src);
        SuperscriptSpan superscriptSpan = new SuperscriptSpan();
        spannableString.setSpan(superscriptSpan, start,end, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
        return spannableString;
    }

    /**设置下标
     * @param src
     * @param start
     * @param end
     * @return
     */
    public static SpannableString setDownScript(String src,int start,int end){
        SpannableString spannableString = new SpannableString(src);
        SubscriptSpan subscriptSpan = new SubscriptSpan();
        spannableString.setSpan(subscriptSpan, start,end, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
        return spannableString;
    }

    /**设置部分文字加粗
     * @param src
     * @param start
     * @param end
     * @return
     */
    public static SpannableString setTextBold(String src,int start,int end){
        SpannableString spannableString = new SpannableString(src);
        StyleSpan styleSpan_B  = new StyleSpan(Typeface.BOLD);
        //StyleSpan styleSpan_I  = new StyleSpan(Typeface.ITALIC);
        spannableString.setSpan(styleSpan_B, start, end, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
//        spannableString.setSpan(styleSpan_I, 8, 10, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
//        textView.setHighlightColor(Color.parseColor("#36969696"));
//        textView.setText(spannableString);
        return spannableString;
    }

    /**设置部分文字倾斜
     * @param src
     * @param start
     * @param end
     * @return
     */
    public static SpannableString setTextItalic(String src,int start,int end){
        SpannableString spannableString = new SpannableString(src);
        //StyleSpan styleSpan_B  = new StyleSpan(Typeface.BOLD);
        StyleSpan styleSpan_I  = new StyleSpan(Typeface.ITALIC);
        //spannableString.setSpan(styleSpan_B, start, end, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
        spannableString.setSpan(styleSpan_I, 8, 10, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
//        textView.setHighlightColor(Color.parseColor("#36969696"));
//        textView.setText(spannableString);
        return spannableString;
    }

    public static SpannableString setTextIcon(String src,int start,int end,Drawable drawable){
        SpannableString spannableString = new SpannableString("在文本中添加表情(表情)");
        //Drawable drawable = getResources().getDrawable(R.mipmap.icon_one);
        drawable.setBounds(0, 0, 42, 42);
        ImageSpan imageSpan = new ImageSpan(drawable);
        spannableString.setSpan(imageSpan, 6, 8, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
        return spannableString;
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值