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 滚动的

简单跑马灯效果的实现:


  • 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;
    }

}

你可能感兴趣的:(TextView使用一)