首页
学习
活动
专区
圈层
工具
发布

Android 千变万化 TextView:神奇的 SpannableString

SpannableString 在 Android 中,常规的字符串类就是 String 或者 Charsequence,String 用的最多,有些人可能对 Charsequence 都有点陌生,EditText...总之,这之间的差别是比较专业的,在这个例子中确实看不出多大区别。 3)绝对字体和相对字体 SpannableString 可以动态地改变字体大小,并且支持绝对大小和相对大小两种模式。...enter image description here 9)添加项目符号 关于这一点,客观地说用处不大,SpannableString 虽然支持设置项目符号,但是实际开发中基本不会用,如果是页面中的栏位...文字和表情可以混排,输入框中输入的表情和聊天列表中显示一致,基本功能都实现了。下面就来看下是怎么实现的吧。...,这个方法中利用正则匹配模式,找到输入内容中每一条符合正则的子字符串,也就是表情编码的字符串,然后像之前那样通过反射获取 Drawable,构建 SpannableString 把 Drawable 和

5.1K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Android 彩色上下文菜单 Context

    它是应用程序环境的全局信息的接口。 这是一个抽象类,由Android系统提供。 它允许访问特定于应用程序的资源和类,以及调用应用程序级操作,如启动活动,广播和接收意图等。...如果有这样一个需求,客户要求将Android中的“进程上下文”字体修改为某种颜色,你该如何去实现? 效果如下: 一:功能实现 当用户长按组件时,弹出的菜单就是上下文菜单。...使用菜单资源创建上下文菜单的具体步骤如下: (0)在XML文件中添加一个TextView,id为tv。...android:id="@+id/m06" android:title="纺织服装与艺术设计分院" /> ---- (3)重写 MainActivity 中 ...在该方法中,首先继承父类的 onCreateContextMenu 方法,然后调用 inflate() 方法解析一个菜单资源文件,并把解析后的菜单保存在menu中,关键代码如下所示: @Override

    61030

    【Android】用户登录界面设计

    这里的思路其实也很好理解,我们把勾选框右侧的文本中的“《用户协议》”这几个字符进行特殊处理即可 二:代码展示 1:xml布局 <?xml version="1.0" encoding="utf-8"?...android:layout_height="wrap_content" android:text="登录" /> 2:java代码 //拿到xml中定义的...,加油 3:思路 ①获取CheckBox中的文本 ②设置一个监听事件 ③Span把标记文本和监听器关联在一起 ④设置一个超链接(提问,传入的是整个text文本,最后怎么会只有“《用户协议》”成了超链接,...SpannableString:带「标记」功能的可变字符序列(不仅能存字符,还能给指定范围的字符添加样式、点击事件等)。...SpannableString 就是专门用来解决这个问题的:先把普通字符串包装成 SpannableString ,再给局部加效果,最后设置回控件显示,就能实现 “富文本” 效果。

    22100

    【有人@我】Android中高亮变色显示文本中的关键字

    应该是好久没有写有关技术类的文章了,前天还有人在群里问我,说群主很长时间没有分享干货了,今天分享一篇Android中TextView在大段的文字内容中如何让关键字高亮变色的文章 ,希望对大家有所帮助,我终于在歪路上回归正途了...今天分享的文章大概内容是在TextView中如何使大段的文字内容中关键字变色高亮显示的,分为一个关键字高亮变色显示和多个关键字一起高亮变色显示。...* @param text * 文字 * @param keyword * 文字中的关键字 * @return */ public...static SpannableString matcherSearchTitle(int color, String text, String keyword) { SpannableString...* @param text * 文字 * @param keyword * 文字中的关键字数组 * @return */ public

    2.4K90

    Android中Textview文字设置不同颜色、下划线、加粗、超链接

    ,当然给textview设置不同的字体颜色也可以通过加HTML标签来实现,但是有SpannableString的存在,为啥不用呢....注意:如果这些额外信息能被所用的方式支持,比如将SpannableString传给TextView;也有对这些额外信息不支持的,比如自定义view中Canvas绘制 文字,对于不支持的情况,SpannableString...当然,SpannableString和SpannableStringBuilder也是存在区别的,它们的区别在于 SpannableString像一个String一样,构造对象的时候传入一个 String...static Spanned fromHtml(String source) 从Html字符串中返回可显示的样式文本。...Spanned fromHtml(String source, Html.ImageGetter imageGetter, Html.TagHandler tagHandler) 从Html字符串中返回可显示的样式文本

    9.8K21

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

    SpanWatcher继承自NoCopySpan,在TextView的setText方法中,会基于传入的文本创建一个新的Spannable对象,在这个过程中SpanWatcher不会被复制到新的Spannable...= stop,那么start表示选择过程中不变的光标,stop表示变化的光标 Span最佳实践 为现有Text创建Span 当TextView调用setText之后,TextView中的文本将变为不可变类型...KTX拓展 KTX中,Kotlin封装了很多对Span的语法糖,大家可以参考官方的链接,了解更多的关于Span的KTX拓展。...拓展的代码其实很简单,首先在getSize中修改行高,再在draw中对图像偏移,示例代码如下所示。...如果要在ClickableSpan中获取Span中的文字,是不能直接通过getText获取的,还需要对上面的代码进行下改造。

    3K20

    仿微信聊天表情发送

    2,具体的转换过程就是用正则表达式比配文字中是否含有[xxx]这类的文字,如果有,那么我们就根据拿到的[xxx]找到它对应的资源文件id,当然这其中有一个关系表,看你怎么处理这个关系了。...private int pageSize = 20;   private static FaceConversionUtil mFaceConversionUtil;   /** 保存于内存中的表情...HashMap */ private HashMap emojiMap = new HashMap();   /** 保存于内存中的表情集合...,也就是要替换的字符串的长度 int end = matcher.start() + key.length();   // 将该图片替换字符串中规定的位置中                 spannableString.setSpan...类于listview中的getview      */ @Override public Object instantiateItem(View arg0, int arg1) {

    8.7K70

    Android经典实战之Textview文字设置不同颜色、下划线、加粗、超链接等效果

    SpannableString 在 Android 开发中是一个非常强大的工具,它允许你在单个字符串范围内应用多种样式。...使用 SpannableString,你可以为文本中的不同部分设置不同颜色,字体大小,字体风格,甚至可以在文本的不同部分添加点击事件。...下面是一个详细的介绍以及一些常见效果的具体代码示例: 基本介绍 SpannableString 是 CharSequence 的一个子类,用于在一个字符串上应用一种或多种样式。...对象 val spannableString = SpannableString("Hello, Android Developers!")...通过组合这些效果,你可以实现丰富的文本展示和交互效果。 END 点赞转发,让精彩不停歇!关注我们,评论区见,一起期待下期的深度好文!

    1.7K10

    TextView

    由于无法直接使用文件名来引用res/drawable中的图像资源,我们使用反射技术从R.drawable类中通过图像资源名称获取对应的图像资源ID,实现的原理就是R.drawable类中的相应的资源ID...对象 SpannableString spannableString = new SpannableString(text); // 将text中的所有文本设置成ClickableSpan...对象,并实现onClick方法 spannableString.setSpan(new ClickableSpan() { // 在onClick方法中可以编写单击链接时要执行的动作...---- 为指定文字添加背景 从上面的例子中我们可以总结出 设置字符串中的某个子字符串的样式(变成可单击的链接、设置字体等)步骤如下: 将字符串转换成SpannableString或者SpannableBuilder...对象 获得要设置样式的子字符串在原字符串中的位置和子字符串后面的字符的位置,即start和end 创建一个Span对象(所有android.text.style包中的XXXSpan类创建的对象的统称,XXX

    2.2K20

    EidtText

    对象,以便插入用ImageSpan对象封装的图像 String text = "gur_project_"; SpannableString spannableString...这种方法的好处是一旦图像非常的多,可以不需要在数组中逐个定义就可以获取到对应的资源ID了。...注意事项: 由于R.drawable类中的资源ID都是public 的静态变量,因此我们可以直接使用Field.get方法获取这些变量的值。...使用EditText类不能直接插入Span对象,因此需要先使用SpannableString对象来封装Span对象(例如本例中的ImageSpan对象),再将SpannableString对象插入到EditText...---- 在EditText中输入特定的字符 EditText控件中可以通过多种方式指定允许输入的字符,比如指向输入0~9的数字 三种方式: android:digits属性设置为0123456789

    1K50

    《Android》Lesson21-广播+SharedPreferences

    (2)editText.requestFocus();获取焦点 android editText 获取焦点 - lucky8star的专栏 - 博客频道 - CSDN.NET Android中EditText...中字体颜色的selector - 博客频道 - CSDN.NET (3)editText改变字体颜色 SpannableString ss = new SpannableString("你要写的内容")...txtInfo.setText(ss); Android TextView中文字通过SpannableString来设置超链接、颜色、字体等属性 - 享受技术带来的快乐 - 博客频道 - CSDN.NET...android SpannableString使用详解 - 青青芳妤 - 博客频道 - CSDN.NET Spanned.SPAN_EXCLUSIVE_EXCLUSIVE的含义 - Lily's Android...Android中SharedPreferences和序列化结合保存对象数据 使用方法 Android应用开发SharedPreferences存储数据的使用方法-android100学习网 SharedPreferences

    82650
    领券