android TextView首行缩进两个字符

一、方法

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

  • 1.布局中设置

  • 2.在java代码中设置
String about = "\u3000\u3000首行缩进了两个字符";
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所在的端点

你可能感兴趣的:(android TextView首行缩进两个字符)