Android spanned SPAN_INCLUSIVE_INCLUSIVE SPAN_EXCLUSIVE_EXCLUSIVE

     以前一直不懂Spanned属性 SPAN_EXCLUSIVE_EXCLUSIVE, SPAN_EXCLUSIVE_EXCLUSIVE。

 

 下面我以一个demo展示其意思

  在 activity_main.xml activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

      xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity" >

    <EditText
        android:id="@+id/test"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="我爱中国人" />
</RelativeLayout>

在Java代码 

      mTxtView = (EditText) findViewById(R.id.test);
        SpannableString sp = new SpannableString(mTxtView.getText());
        sp.setSpan(new ForegroundColorSpan(Color.RED), 1, 3,
                Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
          mTxtView.setText(sp);

 其结果是“我爱中国人” , 在EditText “爱”前、“中”后 插入文字时时 ,字不会显示红色   

如果设置“SPAN_INCLUSIVE_INCLUSIVE”, 在“爱”前,“中”后插入文字时,字会变红色

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android 中的 SpannableString 是一个可变的字符串类型,可以在其中添加格式化效果,如字体颜色、字体大小、下划线、删除线等等。SpannableString 可以用于 TextView 中显示富文本,也可以用于 EditText 中实现输入框中不同格式的文字。 创建 SpannableString 可以通过以下方法创建 SpannableString: ``` SpannableString spannableString = new SpannableString("Hello, World!"); ``` 添加格式化效果 可以使用 setSpan() 方法向 SpannableString 中添加格式化效果,该方法的参数包括效果类型和效果的起始位置和终止位置。以下是一些常用的效果类型: 1. ForegroundColorSpan:设置文字颜色 ``` ForegroundColorSpan colorSpan = new ForegroundColorSpan(Color.RED); spannableString.setSpan(colorSpan, 0, 5, Spanned.SPAN_INCLUSIVE_EXCLUSIVE); ``` 2. BackgroundColorSpan:设置文字背景颜色 ``` BackgroundColorSpan bgSpan = new BackgroundColorSpan(Color.YELLOW); spannableString.setSpan(bgSpan, 6, 12, Spanned.SPAN_INCLUSIVE_EXCLUSIVE); ``` 3. RelativeSizeSpan:设置文字大小 ``` RelativeSizeSpan sizeSpan = new RelativeSizeSpan(1.5f); spannableString.setSpan(sizeSpan, 13, 19, Spanned.SPAN_INCLUSIVE_EXCLUSIVE); ``` 4. StrikethroughSpan:添加删除线 ``` StrikethroughSpan strikethroughSpan = new StrikethroughSpan(); spannableString.setSpan(strikethroughSpan, 20, 25, Spanned.SPAN_INCLUSIVE_EXCLUSIVE); ``` 5. UnderlineSpan:添加下划线 ``` UnderlineSpan underlineSpan = new UnderlineSpan(); spannableString.setSpan(underlineSpan, 26, 32, Spanned.SPAN_INCLUSIVE_EXCLUSIVE); ``` 6. StyleSpan:设置字体样式 ``` StyleSpan styleSpan = new StyleSpan(Typeface.BOLD_ITALIC); spannableString.setSpan(styleSpan, 33, 39, Spanned.SPAN_INCLUSIVE_EXCLUSIVE); ``` 7. ClickableSpan:设置可点击效果 ``` ClickableSpan clickableSpan = new ClickableSpan() { @Override public void onClick(View widget) { // 点击事件处理 } }; spannableString.setSpan(clickableSpan, 40, 46, Spanned.SPAN_INCLUSIVE_EXCLUSIVE); ``` 除了以上几种,还有很多其他的效果类型可以使用,具体可以参考 Android 官方文档。 显示 SpannableString 可以将 SpannableString 直接设置给 TextView 或 EditText 的 text 属性来显示富文本,也可以使用 setText() 方法来设置。 ``` textView.setText(spannableString); ``` 注意:如果使用 ClickableSpan 添加了点击效果,需要将 TextView 或 EditText 设置为可点击,否则点击事件不会生效。 ``` textView.setMovementMethod(LinkMovementMethod.getInstance()); ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值