首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏小陈飞砖

    Spannable 和 Editable、SpannableString 和 SpannableString

    Not all text classes have mutable markup or text; * see {@link Spannable} for mutable markup and {@link Editable} for * mutable text. */ public interface Spanned extends CharSequence Spannable (可加或去除标记的字符序列 * Not all Spannable classes have mutable text; * see {@link Editable} for that. */ public interface Spannable extends Spanned Editable (内容和标记都可变的字符序列) /** * This is the interface for text whose content and markup can be changed */ public interface Editable extends CharSequence, GetChars, Spannable,

    46760编辑于 2022-06-25
  • 来自专栏大前端

    Android Spannable 富文本的多样式使用

    Spannable / 富文本的用途     丰富 Android TextView 的表现形式,如修改同一主体中某一部分文字的颜色、大小、样式、添加超链接以及添加图标,使得 TextView 功能与表现形式更强大 Spannable / 富文本的实现     1. ForegroundColorSpan  修改前景色 ?     2. RelativeSizeSpan 修改文字大小(相对) ?     3.

    1.4K30发布于 2019-04-11
  • 来自专栏非著名程序员

    Android中如何实现图文混排

    ForegroundColorSpan(Color.RED); spannable.setSpan(span, start, end, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE ); spannable.setSpan(span, start, end, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); setText(spannable); (span_1, start, end, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); spannable.setSpan(span_2, start, end, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE ); spannable.setSpan(span_1, end+1, text.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); span_2= ); } return spannable; }

    1.7K90发布于 2018-02-02
  • 来自专栏移动开发之家

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

    /** * replace existing spannable with smiles * * @param context 上下文 * @param spannable 显示的span * @return 是否添加 */ public static boolean addSmiles(Context context, Spannable spannable) { boolean (context, spannable); return spannable; } TextCommonUtils 处理文本显示的逻辑 1、URL和纯数字 有时候,一个女朋友是不够的,额··· resolveUrlLogic(Context context, TextView textView, Spannable spannable, int color, SpanUrlCallBack spannable = TextCommonUtils.getEmojiText(context, text); editText.setText(spannable); //查找@

    2.6K20发布于 2018-08-22
  • 来自专栏移动开发的那些事儿

    TextView实现自定义换行以及缩进文字的格式化对齐

    maxWidth,如果比maxWidth大,那就追加一个换行符号,然后再把累加长度归零,继续开始计算,以此类推 图文混排实现 TextView中有一个概念就是富文本,富文本可以实现图文混排,代码如下: Spannable spannable = Spannable.Factory.getInstance().newSpannable(sbNewText.toString()); ImageSpan imageSpan = new ImageSpan(b); spannable.setSpan(imageSpan, 0, 1, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); setText(spannable ); Spannable是根据当前TextView的文本内容创建出来的,然后可以用ImageSpan去替换Spannable中的任意一个位置 文本缩进实现 依然是用TextView的富文本Spannable 去实现,代码如下: Spannable spannable = Spannable.Factory.getInstance().newSpannable(sbNewText.toString()); BitmapDrawable

    2.9K20发布于 2018-09-04
  • 来自专栏Android群英传

    真·富文本编辑器的演进之路-【译】破解Span性能之谜

    // if setText was called with BufferType.SPANNABLE textView.setText(spannable, BufferType.SPANNABLE)/ / the text can be cast to Spannable val spannableText = textView.text as Spannable// now we can set or 在上面的方案2中,我们看到通过textView.setText(spannableObject,BufferType.SPANNABLE)设置文本时,TextView通过使用Spannable.Factory 如果你想对这个过程进行更多的控制,避免额外的对象创建,可以实现你自己的Spannable.Factory,覆盖newSpannable(CharSequence),并将Spannable.Factory : Spannable { return source as Spannable } } 在得到TextView的引用后,立即设置Spannable.Factory对象一次。

    2K10发布于 2021-03-16
  • 来自专栏Android 开发者

    [译] 论 Android 中 Span 的正确打开方式

    // 如果 setText 被以 BufferType.SPANNABLE 方式调用 textView.setText(spannable, BufferType.SPANNABLE) // 文字可被转为 Spannable val spannableText = textView.text as Spannable // 现在我们可以设置或删除 span spannableText.setSpan( 在上面的选项 2 中,我们看到在通过 textView.setText(spannableObject, BufferType.SPANNABLE) 设置文字时,TextView.Spannable.Factory : Spannable { return source as Spannable } } 在你获取 TextView 的引用之后,立即设置  Spannable.Factory 这允许你在后台线程中创建 Spannable 对象,并做完需要对列表元素做的所有操作。你的Adapter 可以持有对 List<Spannable> 的一个引用。

    2.1K50发布于 2018-06-06
  • 来自专栏Android开发与分享

    【Android】强大的SpannableStringBuilder

    flags:取值有如下四个 Spannable. SPAN_INCLUSIVE_EXCLUSIVE:前面包括,后面不包括,即在文本前插入新的文本会应用该样式,而在文本后插入新文本不会应用该样式 Spannable. SPAN_INCLUSIVE_INCLUSIVE:前面包括,后面包括,即在文本前插入新的文本会应用该样式,而在文本后插入新文本也会应用该样式 Spannable. SPAN_EXCLUSIVE_EXCLUSIVE:前面不包括,后面不包括 Spannable. ForegroundColorSpan(Color.parseColor("#009ad6")); spannableString.setSpan(colorSpan, 0, 8, Spannable.SPAN_EXCLUSIVE_INCLUSIVE

    2.8K120发布于 2018-05-18
  • 来自专栏测试游记

    记一次UI自动化导致APP未响应问题

    被标记为了黄色 对应的代码为 int index = warnInfo.indexOf("\n"); if (index <= ){ index = warnInfo.length(); } spannable.setSpan (clickableSpanMember,,,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); spannable.setSpan(clickableSpanSource,,index ,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); Spanned.SPAN_EXCLUSIVE_EXCLUSIVE (前后都不包括)。 这部分代码编译和运行的时候都不会出错,但是使用Appium进行元素查找的时候就会出错 改为先判断字符长度然后设置点击事件: if (warnInfo.length() >){ spannable.setSpan (clickableSpanSource,,index,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); } 修改之后Appium可以正常查找元素,不会出现APP奔溃现象

    1.1K30编辑于 2022-12-02
  • 来自专栏程序员修炼之路

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

    为红色 spannableString.setSpan( ForegroundColorSpan(Color.RED), 0, // 开始索引 5, // 结束索引 Spannable.SPAN_EXCLUSIVE_EXCLUSIVE 'Android Developers' 为粗体 spannableString.setSpan( StyleSpan(Typeface.BOLD), 7, 25, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE ) // 给文本 'Developers' 添加下划线 spannableString.setSpan( UnderlineSpan(), 15, 25, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE // 'Big' 字段相对比例放大1.5倍 spannableStringSize.setSpan( RelativeSizeSpan(1.5f), 0, 3, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE ) // 设置粗体文字 comprehensiveSpannable.setSpan( StyleSpan(Typeface.BOLD), 4, 8, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE

    1.8K10编辑于 2024-09-06
  • 来自专栏向治洪

    SpannableString 给TextView添加不同的显示样式

    TextView是用来显示文本的,有时需要给TextView中的个别字设置为超链接,或者设置个别字的颜色、字体等,那就需要用到Spannable对象,可以借助Spannable对象实现以上设置 myTextView Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);      //设置高亮样式一      sp.setSpan(new BackgroundColorSpan(Color.RED), 17 ,19,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE );      //设置高亮样式二      sp.setSpan(new ForegroundColorSpan(Color.YELLOW),20,24,Spannable.SPAN_EXCLUSIVE_INCLUSIVE );      //设置斜体      sp.setSpan(new StyleSpan(android.graphics.Typeface.BOLD_ITALIC), 27, 29, Spannable.SPAN_EXCLUSIVE_INCLUSIVE

    2.1K70发布于 2018-02-01
  • 来自专栏Android点滴积累

    Android TextView 添加下划线的几种方式

    Spannable或实现它的类,如SpannableString来格式部分字符串。 tv.setMovementMethod(LinkMovementMethod.getInstance()); CharSequence text = tv.getText(); if (text instanceof Spannable ){ int end = text.length(); Spannable sp = (Spannable)tv.getText(); URLSpan ; style.setSpan(myURLSpan,sp.getSpanStart(url),sp.getSpanEnd(url),Spannable.SPAN_EXCLUSIVE_EXCLUSIVE ); style.setSpan(new ForegroundColorSpan(0xFFFF0000), start, end, Spannable.SPAN_INCLUSIVE_INCLUSIVE

    6K70发布于 2018-01-04
  • 来自专栏Android干货

    Android项目实战(十六):QQ空间实现(一)—— 展示说说中的评论内容并有相应点击事件

    CharSequence text = holder.txt_comment.getText(); int ends = text.length(); Spannable spannable = (Spannable) holder.txt_comment.getText(); URLSpan[] urlspan = spannable.getSpans (url), spannable.getSpanEnd(url), spannable.SPAN_EXCLUSIVE_EXCLUSIVE); spannable = (Spannable) holder.txt_comment.getText(); URLSpan[] urlspan = spannable.getSpans (url), spannable.getSpanEnd(url), spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

    2.2K70发布于 2018-06-25
  • 来自专栏程序员开发工具

    TextView AutoLink, ClikSpan 与长按事件冲突的解决

    = 0) { Spannable s2; if (type == BufferType.EDITABLE || text instanceof Spannable) { s2 = (Spannable) text; } else { s2 = mSpannableFactory.newSpannable( BufferType.EDITABLE : BufferType.SPANNABLE; /* * We must go ahead and set the = null || onCheckIsTextEditor()) && isEnabled() && mText instanceof Spannable && mLayout Spannable spannable = (Spannable) text; ClickableSpan[] clickableSpans = spannable.getSpans

    2.3K20发布于 2018-12-28
  • 来自专栏Android干货

    Android项目实战(十六):QQ空间实现(一)—— 展示说说中的评论内容并有相应点击事件

    CharSequence text = holder.txt_comment.getText(); int ends = text.length(); Spannable spannable = (Spannable) holder.txt_comment.getText(); URLSpan[] urlspan = spannable.getSpans (url), spannable.getSpanEnd(url), spannable.SPAN_EXCLUSIVE_EXCLUSIVE); spannable = (Spannable) holder.txt_comment.getText(); URLSpan[] urlspan = spannable.getSpans (url), spannable.getSpanEnd(url), spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

    2.9K60发布于 2018-05-18
  • 来自专栏Code

    Android控件TextView实现静态图与动态GIF图文混排

    LinkMovementMethod.getInstance()); CharSequence text = tv.getText(); if(text instanceof Spannable ){ int end = text.length(); Spannable sp = (Spannable)tv.getText(); for(URLSpan url : urls){ style.setSpan(url,sp.getSpanStart(url),sp.getSpanEnd(url), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE "#FF12ADFA")); style.setSpan(colorSpan,sp.getSpanStart(url),sp.getSpanEnd(url), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE ),tv),url.getSource()); style.setSpan(span,sp.getSpanStart(url),sp.getSpanEnd(url), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE

    2.4K30发布于 2019-08-27
  • 来自专栏囍楽云博客

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

    sb = new SpannableStringBuilder("字体多种颜色一&背景色"); sb.setSpan(new ForegroundColorSpan(Color.RED),0,2, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE ); sb.setSpan(new ForegroundColorSpan(Color.YELLOW),2,5, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); sb.setSpan (new ForegroundColorSpan(Color.BLUE), 5, 7, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); //背景色 sb.setSpan(new BackgroundColorSpan(Color.GREEN), 7, sb.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); mTextView4.setText

    4.5K20编辑于 2022-12-26
  • 来自专栏极客猴

    会变色的TextView

    1 介绍 SpannableString SpannableString 继承于 SpannableStringInternal,同时实现了 CharSequence, GetChars, Spannable 数学公式会用到) TextAppearanceSpan 文本外貌(包括字体、大小、样式和颜色) TypefaceSpan 文本字体 URLSpan 文本超链接 flags 也有四个参数,分别是: 1) Spannable.SPAN_EXCLUSIVE_EXCLUSIVE :前后都不包括,即在指定范围的前面和后面插入新字符都不会应用新样式 2) Spannable.SPAN_EXCLUSIVE_INCLUSIVE:前面不包括,后面包括。 即仅在范围字符的后面插入新字符时会应用新样式 3) Spannable.SPAN_INCLUSIVE_EXCLUSIVE:前面包括,后面不包括。 4) Spannable.SPAN_INCLUSIVE_INCLUSIVE:前后都包括。 3 代码实现 这么多消息,当然需要一个列表来呈现。

    1.2K10发布于 2018-08-16
  • 来自专栏Code

    Android中TextView文字设置不同的颜色

    blackSpan = new ForegroundColorSpan(Color.parseColor("#000000")); builder.setSpan(buleSpan1, 0, 5, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE ); builder.setSpan(blackSpan, 5, 7, Spannable.SPAN_INCLUSIVE_INCLUSIVE); builder.setSpan(buleSpan, 7, 12, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); builder.setSpan(blackSpan,12, 17, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE

    11.5K20发布于 2019-08-07
  • 来自专栏即时通讯技术

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

    这里同样使用Spannable,我定义了一个DataBindingSpan<T>接口,主要有两个功能: 1)让用户提供一个CharSequence对象作为标签,它决定了标签文本的样式和内容; 2)提供一个方法返回 正如SpannableData所展现的一样,当spannedText()返回的是一个Spannable对象时,使用Spanned.SPAN_EXCLUSIVE_EXCLUSIVE作为flag。 既然选中状态的实现是Span,它就是与View无关的,而与Spannable有关。 , start: Int, end: Int) {     }     override fun onSpanAdded(text: Spannable?, what: Any? fun isDirty(text: Spannable): Boolean } 其次,让SpannableData实现此接口。

    2.7K30发布于 2018-12-23
领券