`
Darar
  • 浏览: 88743 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

TextView使用SpannableString设置复合文本

 
阅读更多


1、BackgroundColorSpan 背景色

SpannableString spanText = new SpannableString("萝卜白菜的博客 -- http://orgcent.com");
spanText.setSpan(new BackgroundColorSpan(Color.GREEN), 0, spanText.length(), Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
mTVText.append("\n");
mTVText.append(spanText);


2.ForegroundColorSpan 文本颜色(前景色)
spanText = new SpannableString("萝卜白菜的博客 -- http://orgcent.com");
spanText.setSpan(new ForegroundColorSpan(Color.BLUE), 6, spanText.length(), Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
mTVText.append("\n");
mTVText.append(spanText);


3.MaskFilterSpan 修饰效果,如模糊(BlurMaskFilter)、浮雕(EmbossMaskFilter)
spanText = new SpannableString("MaskFilterSpan -- http://orgcent.com");
int length = spanText.length();
//模糊(BlurMaskFilter)
MaskFilterSpan maskFilterSpan = new MaskFilterSpan(new BlurMaskFilter(3, Blur.OUTER));
spanText.setSpan(maskFilterSpan, 0, length - 10, Spannable.
SPAN_INCLUSIVE_EXCLUSIVE);
//浮雕(EmbossMaskFilter)
maskFilterSpan = new MaskFilterSpan(new EmbossMaskFilter(new float[]{1,1,3}, 1.5f, 8, 3));
spanText.setSpan(maskFilterSpan, length - 10, length, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
mTVText.append("\n");
mTVText.append(spanText);


4.RasterizerSpan 光栅效果
spanText = new SpannableString("StrikethroughSpan");
spanText.setSpan(new StrikethroughSpan(), 0, 7, Spannable.
SPAN_INCLUSIVE_EXCLUSIVE);
mTVText.append("\n");
mTVText.append(spanText);


5.StrikethroughSpan 删除线(中划线)

spanText = new SpannableString("StrikethroughSpan");
spanText.setSpan(new StrikethroughSpan(), 0, 7, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
mTVText.append("\n");
mTVText.append(spanText);


6.UnderlineSpan 下划线

spanText = new SpannableString("UnderlineSpan");
spanText.setSpan(new UnderlineSpan(), 0, spanText.length(), Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
mTVText.append("\n");
mTVText.append(spanText);


7.DynamicDrawableSpan 设置图片,基于文本基线或底部对齐。
DynamicDrawableSpan drawableSpan = new DynamicDrawableSpan(DynamicDrawableSpan.ALIGN_BASELINE) {
    @Override
    public Drawable getDrawable() {
        Drawable d = getResources().getDrawable(R.drawable.ic_launcher);
        d.setBounds(0, 0, 50, 50);
        return d;
    }
};
DynamicDrawableSpan drawableSpan2 = new DynamicDrawableSpan(DynamicDrawableSpan.ALIGN_BOTTOM) {
    @Override
    public Drawable getDrawable() {
          Drawable d = getResources().getDrawable(R.drawable.ic_launcher);
          d.setBounds(0, 0, 50, 50);
                return d;
            }
        };
spanText.setSpan(drawableSpan, 3, 4, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
spanText.setSpan(drawableSpan2, 7, 8, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
mTVText.append("\n");
mTVText.append(spanText);


8.左边图片基于基线对齐,右边图片基于底部对齐

spanText = new SpannableString("ImageSpan");
Drawable d = getResources().getDrawable(R.drawable.ic_launcher);
</strong>d.setBounds(0, 0, 50, 50);
spanText.setSpan(new ImageSpan(d), 3, 4, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
mTVText.append("\n");
mTVText.append(spanText);


9.ScaleXSpan 基于x轴缩放

spanText = new SpannableString("ScaleXSpan -- 萝卜白菜的博客");
//参数proportion:比例大小
spanText.setSpan(new ScaleXSpan(3.8f), 3, 7, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
mTVText.append("\n");
mTVText.append(spanText);


10.SubscriptSpan 下标(数学公式会用到)
spanText = new SpannableString("SubscriptSpan -- 萝卜白菜的博客");
spanText.setSpan(new SubscriptSpan(), 6, 7, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
mTVText.append("\n");
mTVText.append(spanText);


11.SuperscriptSpan 上标(数学公式会用到)
spanText = new SpannableString("SuperscriptSpan -- 萝卜白菜的博客");
spanText.setSpan(new SuperscriptSpan(), 6, 7, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
mTVText.append("\n");
mTVText.append(spanText);


12.URLSpan 文本超链接
spanText = new SpannableString("URLSpan -- 萝卜白菜的博客");
spanText.setSpan(new URLSpan("http://orgcent.com"), 10, spanText.length(), Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
mTVText.append("\n");
mTVText.append(spanText);
//让URLSpan可以点击
mTVText.setMovementMethod(new LinkMovementMethod());
分享到:
评论

相关推荐

    Android TextView使用SpannableString设置复合文本的方法详解

    在实际开发中,开发者可以根据需求选择合适的Span类型,通过setSpan方法将它们应用到特定的文本片段上,从而实现TextView的复合文本展示。这种方式极大地增强了TextView的灵活性,让UI设计更加丰富多样。同时,由于...

    TextView使用SpannableString设置复合文本 SpannableString实现TextView的链接效果

    TextView使用SpannableString设置复合文本 TextView通常用来显示普通文本,但是有时候需要对其中某些文本进行样式、事件方面的设置。Android系统通过SpannableString类来对指定文本进行相关处理,具体有以下功能: 1...

    TextView显示图片

    PS:关于SpannableString相关的其他span,查看[Android教程]TextView使用SpannableString设置复合文本 2、使用Html.ImageGetter显示网页中的图片 查看文章:[Android教程]TextView显示Html类解析的网页和图片及自定义...

    Android-TextView换行排版混乱-允许设置SpannableString

    在某些情况下,当我们需要对`TextView`中的文本进行更精细的控制时,如自定义换行规则或者设置特殊的`SpannableString`,可能会遇到排版混乱的问题。本文将深入探讨如何解决`TextView`自动换行导致的排版问题,并...

    android设置TextView中不同的文字字体大小且垂直居中显示

    4. 设置TextView:最后,将SpannableString设置到TextView中: ```java TextView textView = findViewById(R.id.textView); textView.setText(spannableText); ``` 通过这种方式,我们可以在一个TextView中实现...

    Android SpannableString设置超链接、颜色、字体等属性

    那么如何对于TextView中各个部分的文本来设置字体,大小,颜色,样式,以及超级链接等属性呢?下面我们通过SpannableString的具体实例操作来演示一下。 package com.snowdream; import java.io.IOException; ...

    TextView文本设置多个颜色

    其中,为`TextView`中的文本设置多种颜色是一项常见且实用的功能。本篇文章将详细探讨如何通过不同方法实现这一功能,并提供示例代码帮助开发者更好地理解和应用。 ### 一、使用HTML标签设置颜色 在Android中,...

    Android实现TextView部分文本监听单击事件

    将ClickableSpan应用于SpannableString的指定部分,然后设置到TextView。 ```java int start = text.indexOf(clickablePart); int end = start + clickablePart.length(); spannableText.setSpan(new ...

    TextView如何显示丰富的文本

    本篇文章将深入探讨如何使用`TextView`来显示丰富的文本,包括设置字体、颜色、样式,以及使用链接、图片和自定义视图等。 一、基本使用 `TextView`在XML布局文件中通过`&lt;TextView&gt;`标签定义,例如: ```xml ...

    SpannableString 一个TextView不同的效果实现

    在Android开发中,SpannableString是一个非常重要的工具,它允许我们在TextView中实现各种富文本效果。这个技术专题主要探讨如何利用SpannableString来创建一个TextView,实现点击事件、下划线、局部字体放大、局部...

    Android Textview 支持ClickableSpan(富文本)

    *支持Textview设置富文本点击 *设置Textview 中部分字设置可以点击、变色,设置setMovementMethod(LinkMovementMethod.getInstance())后滑动与Textview局部点击冲突...都已经解决. *解决点击空白区域依然有点击事件 ...

    TextView中,设置指定部分文字改变颜色,和指定部分文字点击事件

    - 当设置`TextView`的文本时,记得使用`setMovementMethod(LinkMovementMethod.getInstance())`,否则点击事件可能无法正常触发。 - 范围的起始和结束位置应根据实际文本内容来设定,确保不会超出文本长度。 - 在...

    Android如何通过TextView实现超链接的跳转

    在布局XML文件中定义一个TextView,并在代码中设置其文本,同时启用`android:textIsSelectable`属性以允许文本选择。 ```xml &lt;TextView android:id="@+id/hyperlink_textview" android:layout_width="wrap_...

    Android RichText 让Textview轻松的支持富文本(图像ImageSpan、点击效果等等类似QQ微信聊天)

    RichTextWrapper :TextView的包裹类,实现支持富文本,通过new RichTextWrapper(TextView v)来构造。 RTMovementMethod: 继承自Android原生的LinkMovementMethod,重写onTouchEvent方法,优化了ClickSpan(点击...

    android TextView 文字部分渐变

    在Android开发中,有时我们...总之,Android的`LinearGradient`、`FontSpan`和`SpannableString`为我们提供了强大的文本样式定制能力,利用它们可以轻松实现TextView的文字部分渐变色,提升界面的美观度和用户体验。

    Android编程中TextView字体属性设置方法(大小、字体、下划线、背景色)

    本文实例讲述了Android编程中TextView字体属性设置方法(大小、字体、下划线、背景色)。分享给大家供大家参考,具体如下: import android.content.Context; import android.graphics.Color; import android.text....

    Android TextView中文字通过SpannableString设置属性用法示例

    本文实例讲述了Android TextView中文字通过SpannableString设置属性的方法。分享给大家供大家参考,具体如下: 在Android中,TextView是我们最常用的用来显示文本的控件。 一般情况下,TextView中的文本都是一个样式...

    SpannableString实现绚丽的文本和图文混排

    `TextView`是Android系统提供的一种用于显示单行或多行文本的视图组件,它在各种应用场景中都有广泛使用,如消息提示、用户反馈、设置界面等。当需要实现更复杂的文本样式,如改变文本颜色、设置背景色、调整字体...

Global site tag (gtag.js) - Google Analytics