android TextView首行缩进两个字符

一、方法

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

  • 1.布局中设置
<TextView
    android:id="@+id/tv_about"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="\u3000\u3000首行缩进了两个字符"
    android:textSize="25sp" />
  • 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所在的端点

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容