android TextView首行缩进两个字符

一、方法

u3000 代表一个空白字符,是全角空格的16进制Unicode编码

  • 1.布局中设置

<TextView
    android:id="@+id/tv_about"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="u3000u3000首行缩进了两个字符"
    android:textSize="25sp" />

  • 2.在java代码中设置

String about = "u3000u3000首行缩进了两个字符";
tv_about.setText(about);

二、相关知识

  • 1.uxxxx:其中xxxx表明一个16进制数字 这种格式是unicode码的写法表明一个char字符

  • 2.三种空格(u00A0,u0020,u3000)表明的区别
    (1).不间断空格u00A0,主要用在office中,让一个单词在结尾处不会换行显示,快捷键ctrl+shift+space ;
    (2).半角空格(英文符号)u0020,代码中常用的;
    (3).全角空格(中文符号)u3000,中文文章中使用;

三、SpannableString

 public void SJ(Context context, TextView textView, String str, int mPx) {
        //1.先创建SpannableString对象
        SpannableString spannableString = new SpannableString(str);
        //2.设置文本缩进的样式,参数arg0,首行缩进的像素,arg1,剩余行缩进的像素,这里我将像素px转换成了手机独立像素dp
        LeadingMarginSpan.Standard what = new LeadingMarginSpan.Standard(dp2px(context, mPx), 0);
        //3.进行样式的设置了,其中参数what是具体样式的实现对象,start则是该样式开始的位置,end对应的是样式结束的位置,参数flags,定义在Spannable中的常量
        spannableString.setSpan(what, 0, spannableString.length(), SpannableString.SPAN_INCLUSIVE_INCLUSIVE);
        textView.setText(spannableString);
    }

flag有以下四种:

Spanned.SPAN_EXCLUSIVE_EXCLUSIVE — 不包含两端start和end所在的端点
Spanned.SPAN_EXCLUSIVE_INCLUSIVE — 不包含端start,但包含end所在的端点
Spanned.SPAN_INCLUSIVE_EXCLUSIVE — 包含两端start,但不包含end所在的端点
Spanned.SPAN_INCLUSIVE_INCLUSIVE— 包含两端start和end所在的端点

© 版权声明
THE END
如果内容对您有所帮助,就支持一下吧!
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容