首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用SpannableStringBuilder格式化EditText和TextView

SpannableStringBuilder是Android中的一个类,用于对文本进行格式化和样式设置。它可以在一个文本中设置不同的字体、颜色、大小、样式等属性,从而实现富文本的效果。

在使用SpannableStringBuilder格式化EditText和TextView时,可以通过以下步骤进行操作:

  1. 创建一个SpannableStringBuilder对象:
代码语言:txt
复制
SpannableStringBuilder builder = new SpannableStringBuilder();
  1. 添加文本内容:
代码语言:txt
复制
builder.append("文本内容");
  1. 设置文本样式: 可以使用不同的Span类来设置不同的样式,常用的Span类包括:
  • ForegroundColorSpan:设置文本颜色
  • BackgroundColorSpan:设置文本背景色
  • RelativeSizeSpan:设置文本相对大小
  • StyleSpan:设置文本样式(粗体、斜体等)
  • UnderlineSpan:设置文本下划线
  • StrikethroughSpan:设置文本删除线
  • ClickableSpan:设置可点击的文本
  • ImageSpan:设置文本中的图片等

示例代码:

代码语言:txt
复制
builder.setSpan(new ForegroundColorSpan(Color.RED), 0, 5, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
builder.setSpan(new StyleSpan(Typeface.BOLD), 6, 10, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
  1. 将格式化后的文本应用到EditText或TextView中:
代码语言:txt
复制
textView.setText(builder);

使用SpannableStringBuilder格式化EditText和TextView可以实现丰富的文本效果,比如设置关键字高亮、添加点击事件等。在实际应用中,可以根据具体需求选择合适的Span类来设置文本样式。

腾讯云相关产品和产品介绍链接地址:

  • 腾讯云文本审核(https://cloud.tencent.com/product/tca)
  • 腾讯云内容安全(https://cloud.tencent.com/product/cms)
  • 腾讯云移动推送(https://cloud.tencent.com/product/tpns)
  • 腾讯云云函数(https://cloud.tencent.com/product/scf)
  • 腾讯云云数据库 MySQL 版(https://cloud.tencent.com/product/cdb)
  • 腾讯云对象存储(https://cloud.tencent.com/product/cos)
  • 腾讯云区块链服务(https://cloud.tencent.com/product/tbaas)
  • 腾讯云视频处理(https://cloud.tencent.com/product/vod)
  • 腾讯云人工智能(https://cloud.tencent.com/product/ai)
  • 腾讯云物联网开发平台(https://cloud.tencent.com/product/iotexplorer)
  • 腾讯云移动开发平台(https://cloud.tencent.com/product/mpt)
  • 腾讯云音视频通信(https://cloud.tencent.com/product/trtc)
  • 腾讯云云原生应用引擎(https://cloud.tencent.com/product/tke)
  • 腾讯云云原生数据库 TDSQL(https://cloud.tencent.com/product/tdsql)
  • 腾讯云云原生存储 CFS(https://cloud.tencent.com/product/cfs)
  • 腾讯云云原生网络(https://cloud.tencent.com/product/vpc)
  • 腾讯云云原生安全(https://cloud.tencent.com/product/ssm)
  • 腾讯云云原生计算(https://cloud.tencent.com/product/cvm)
  • 腾讯云云原生区块链服务(https://cloud.tencent.com/product/tbaas)
  • 腾讯云云原生物联网(https://cloud.tencent.com/product/iotexplorer)
  • 腾讯云云原生移动开发(https://cloud.tencent.com/product/mpt)
  • 腾讯云云原生存储(https://cloud.tencent.com/product/cos)
  • 腾讯云云原生音视频通信(https://cloud.tencent.com/product/trtc)
  • 腾讯云云原生多媒体处理(https://cloud.tencent.com/product/vod)
  • 腾讯云云原生人工智能(https://cloud.tencent.com/product/ai)
  • 腾讯云云原生区块链(https://cloud.tencent.com/product/tbaas)
  • 腾讯云云原生元宇宙(https://cloud.tencent.com/product/tbaas)
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

微博的文本编辑显示(emoji表情,@某人、链接高亮点击)

(), 0); SpannableStringBuilder spannableStringBuilder = new SpannableStringBuilder(editText.getText...TextView中 对于文本我们最后都处理为Spannable 返回,显示的时候只需要setText即可。...有时候,一个女朋友是不够的,额···┑( ̄Д  ̄)┍TextView除了显示表情之外还需要对URL手机号码实现高亮可点击,这时候就需要在表情之外增加其他的了逻辑了。...3)、删除的时候对应删除list里面的idname。 4)、不能直接使用Span来改变颜色,不然某些机器中会导致@块后面的字体效果直接变为@一样的样式(目前不知道什么原因)。...(spannableStringBuilder); editText.setSelection(editText.getText().length()); } 就到这了,米娜桑,下面是demo

2.2K20
  • 让你的EditText删除表情比微信更高效--记一次android性能分析优化实战

    前言 自己在做SpEditTool:一个支持表情,@mention,#话题#等功能的EditText控件,这个项目的时候出现了一个很奇怪的问题 EditText输入表情过多的时候,从中间开始删除表情,会出现非常卡的情况..., spData.end);这一行 精确定位 再准备顺藤摸瓜找到卡顿的真正元凶,但是代码跳着跳着就到SpannableStringBuilderTextView这两个超大的类里去了,在哪卡的还不知道自己就绕晕了...SpannableStringBuilder设置给EditText 最后设置光标位置 完成这一系列操作之后demo一跑,删除果然变流畅了,当时心里那个高兴啊,竟然做个功能可以比微信实现的还好那么一点 输入法问题...的相关方法 对Span相关的方法特殊处理 贴上WatcherWrapper 的代码,自定义SpannableStringBuilder代码就不贴了,大家可以去项目里找com.sunhapper.spedittool.view.SpannableBuilder...希望读到这的您能转发分享关注一下我,以后还会更新技术干货,谢谢您的支持!

    1.4K30

    真·富文本编辑器的演进之路-Span的整体性控制

    通过SpanWatcher控制 第二种方案,我们使用普通文本,但是对普通文本增加Span标记,并对这个Span做整体性控制,这种方案复杂一点,要处理的地方也比较多,但是由于它使用的是普通文本,所以在样式上可以其它普通文本完全保持一致...着色 首先,我们来实现普通文本的变色功能,做一个蓝色的字色,这个比较简单,可以使用ClickableSpan或者其它Span来着色,为了方便我们富文本的输入展示,这里直接选择ClickableSpan...其实,Android的Span不仅功能非常强大,而且也提供了非常完善的管理API,在TextViewEdittext中,我们要监听Text的变化过程,可以使用TextWatcher,它可以在文本发生改变时进行回调...在TextVIew的内部,它通过DynamicLayout来渲染Spannable数据,在其内部会设置SpanWatcher来监听Span的新增、修改删除,当监听到变化后,会调用其内部的方法进行刷新。...看完了SpanWatcher,再来看下Selection,Selection是为TextViewEdittext设计的一套管理选中态的工具类,借助Selection,可以在不依赖具体View的情况下,

    2K30

    Android端IM应用中的@人功能实现:仿微博、QQ、微信,零入侵、高可扩展

    当然,如果我使用这种方式,就不会有这篇博客了。其实Android SDK便有一个优秀的Span管理器,那就是SpannableStringBuilder。...也就是说,我们可以不使用EditText自身的API却能够管理它的光标活动选中状态(请注意这几句话,他是“优雅实现”的基石)。 Selection管理光标活动。那么,SpanWatcher又是什么?...我要让它就像使用普通EditText一样正常使用setText()方法。 需要思考的问题是,SelectionSpanWatcher在哪里消失了?我要重新找回这个轴承。...当TextView.isTextSelectable()返回true时,TextView的文本模式; 3)BufferType.EDITABLE EditText的文本模式,可编辑,带文本样式。...android.widget.TextView#setEditableFactory(Factory) 下面是重写的Editable.Factory,作用是重新把NoCopySpan设置到SpannableStringBuilder

    2.2K30

    EditText的属性使用方法

    EditTextTextView非常相似,它甚至与TextView 共用了绝大部分XML属性方法。EditTextTextView的最大区别在于:EditText可以接受用户输入。...一、EditText简介 EditText支持的XML属性及相关方法见TextView表中介绍的与输入有关的属性方法,其中比较重要的一个属性是inputType,用于为EditText设置输入类型,其属性值主要有以下一些...EditText还派生了如下两个子类。 n AutoCompleteTextView:带有自动完成功能的EditText。由于该类通常需要与 Adapter结合使用,因此将会在下一章进行学习。...同TextView示例程序一样,同样使用WidgetSample工程,在app/main/res/layout/目录下创建一个edittext_layout.xml文件,然后在其中填充如下代码片段: <...EditText的示例程序就先到这里,关于其他使用方法建议大家自己进行练习。

    2.5K90

    真·富文本编辑器的演进之路-Span开胃菜

    所在的端点,即[a,b] 创建Span的数据结构 当我们使用Span时,主要会使用到下面几个类,SpannedString、SpannableString 或 SpannableStringBuilder...{} override fun getLeadingMarginLineCount(): Int = lines } 使用时,只需要根据Image计算好TextView需要留出的行数边距即可...Selection Selection用于在Edittext中执行选中功能,在开发富文本编辑器的时候,这是必不可少的的部分,而且Selection独立于EditText,可以在不使用EditText的情况下...下面通过一些场景来分析ImageSpan的核心逻辑使用方式。 直接使用资源文件 这是ImageSpan的最基本使用方法,代码如下所示。...因为当点击ClickableSpan时,TextView的selectionStartselectionEnd会改变,这时候就不用处理TextView的点击事件了,经过这层过滤,就实现了TextView

    2.5K20

    【整理篇】Android 开发小技巧

    /storage/emulated/0/… 手机内部存储路径 mEditText.setKeyListener(null); EditText设置不可编辑,比focusable、enable更粗暴 android...android:attr/selectableItemBackground" item的水波纹效果,在item的View加上这一属性, 5.0+才行 includeFontPadding=“false” 去除TextView...上下的padding viewpager的item点击事件 viewpager底层拦截了点击事件,所以点击事件写在adapter里面 android:imeOptions=“actionDone” EditText...修改软键盘的回车键 android:contentDescription="@null" ImageView去除缺少描述的警告 tools:text=“预览” 使用tools属性工具预览布局 android...() 验证用户输入 Context.getCacheDir() 获取缓存数据文件夹的路径 DateUtils.formatDateTime() 用来进行区域格式化工作,输出格式化本地化的时间或者日期

    65020

    详解Android登陆界面用户协议解决方案

    用户协议.png 一般来说每个app都有这个用户协议阅读相关的功能,之前做的都是一个协议,也都是单行的,完全没有复杂度,可以一个checkbox加上一个textview来搞定,那么像图上这种复杂的该怎们实现呢...来看他有神们不同,有那些难点 1,选中框被文字包裹,单纯的checkboxtextview无法实现,因为选中框会在文字左方 2,协议文件有很多,不定项,文件是服务器返回的,而且每个文件中间都会有一个颜色不一样的点隔开...其实这样一看很多人都知道可以用textview的span来搞定,算盘的想过内容就不复习了,直接上代码 首先模拟一个协议数据,创建一个是否阅读的变量 String[] protocols = {...* @param resId */ private void setIconSapn(SpannableStringBuilder spannableStringBuilder, int...mVerticalAlignment == ALIGN_FONTCENTER) { //此处加入判断, 如果是自定义的居中对齐 //与文字的中间线对齐(这种方式不论是否设置行间距都能保障文字的中间线图片的中间线是对齐的

    1.1K31

    textview设置字体大小-设置textview字体样式

    设置样式 可以在代码中设置   也可以在xml中设置   一些字体基础的设置,都可以的textview设置字体大小,但是我们能满足吗?...), 7, sb.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); mTextView4.setText(sb); //字体颜色多样,设置其他样式也可以使用...ScaleXSpan(0.5f), 4, 5, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); mTextView9.setText(sb4);   当然,这些都是自带的都可以解决textview...mgr, "fonts/kukup_cloud.TTF"); mTextView11.setTypeface(tf1); mTextView11.setText("华文彩云");   如果有人想全局都使用自己的字体...ok,你可以这样做:   然后 在布局文件中使用自定义的文字控件就可以了。。   附快速创建assets文件的方法   下面是效果图   忘了 还有29种文字样式下载地址:

    3K20
    领券