看到一篇说Span的文章,留做备用,来源:http://orgcent.com/android-textview-spannablestring-span/
import android.app.Activity; import android.graphics.BlurMaskFilter; import android.graphics.Color; import android.graphics.EmbossMaskFilter; import android.graphics.Rasterizer; import android.graphics.Typeface; import android.graphics.BlurMaskFilter.Blur; import android.graphics.drawable.Drawable; import android.os.Bundle; import android.text.Spannable; import android.text.SpannableString; import android.text.method.LinkMovementMethod; import android.text.style.AbsoluteSizeSpan; import android.text.style.BackgroundColorSpan; import android.text.style.DynamicDrawableSpan; import android.text.style.ForegroundColorSpan; import android.text.style.ImageSpan; import android.text.style.MaskFilterSpan; import android.text.style.RasterizerSpan; import android.text.style.RelativeSizeSpan; import android.text.style.ScaleXSpan; import android.text.style.StrikethroughSpan; import android.text.style.StyleSpan; import android.text.style.SubscriptSpan; import android.text.style.SuperscriptSpan; import android.text.style.TextAppearanceSpan; import android.text.style.TypefaceSpan; import android.text.style.URLSpan; import android.text.style.UnderlineSpan; import android.widget.TextView; public class SpanTestActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); TextView displayText = (TextView) findViewById(R.id.display); // BackgroundColorSpan SpannableString spanText = new SpannableString("吾将上下而求索 -- http://google.com"); spanText.setSpan(new BackgroundColorSpan(Color.GREEN), 0, spanText.length(), Spannable.SPAN_INCLUSIVE_EXCLUSIVE);; displayText.append(spanText); // ForegroundColorSpan spanText = new SpannableString("吾将上下而求索 -- http://google.com"); spanText.setSpan(new ForegroundColorSpan(Color.BLUE), 5, 7, Spannable.SPAN_INCLUSIVE_EXCLUSIVE); displayText.append("\n"); displayText.append(spanText); // MaskFilterSpan spanText = new SpannableString("吾将上下而求索 -- http://google.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); displayText.append("\n"); displayText.append(spanText); // RasterizerSpan spanText = new SpannableString("吾将上下而求索 -- http://google.com"); spanText.setSpan(new RasterizerSpan(new Rasterizer()), 0, 7, Spannable.SPAN_INCLUSIVE_EXCLUSIVE); displayText.append("\n"); displayText.append(spanText); // StrikethroughSpan spanText = new SpannableString("吾将上下而求索 -- http://google.com"); spanText.setSpan(new StrikethroughSpan(), 0, 7, Spannable.SPAN_INCLUSIVE_EXCLUSIVE); displayText.append("\n"); displayText.append(spanText); // UnderlineSpan spanText = new SpannableString("吾将上下而求索 -- http://google.com"); spanText.setSpan(new UnderlineSpan(), 0, spanText.length(), Spannable.SPAN_INCLUSIVE_EXCLUSIVE); displayText.append("\n"); displayText.append(spanText); // AbsoluteSizeSpan spanText = new SpannableString("吾将上下而求索 -- http://google.com"); spanText.setSpan(new AbsoluteSizeSpan(20, true), 0, spanText.length(), Spannable.SPAN_INCLUSIVE_EXCLUSIVE); displayText.append("\n"); displayText.append(spanText); // 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); displayText.append("\n"); displayText.append(spanText); // ImageSpan spanText = new SpannableString("吾将上下而求索 -- http://google.com"); Drawable d = getResources().getDrawable(R.drawable.ic_launcher); d.setBounds(0, 0, 50, 50); spanText.setSpan(new ImageSpan(d), 3, 4, Spannable.SPAN_INCLUSIVE_EXCLUSIVE); displayText.append("\n"); displayText.append(spanText); // RelativeSizeSpan spanText = new SpannableString("吾将上下而求索 -- http://google.com"); // 参数proportion:比例大小 spanText.setSpan(new RelativeSizeSpan(2.5f), 5, 7, Spannable.SPAN_INCLUSIVE_EXCLUSIVE); displayText.append("\n"); displayText.append(spanText); // ScaleXSpan spanText = new SpannableString("吾将上下而求索 -- http://google.com"); //参数proportion:比例大小 spanText.setSpan(new ScaleXSpan(3.8f), 5, 7, Spannable.SPAN_INCLUSIVE_EXCLUSIVE); displayText.append("\n"); displayText.append(spanText); // StyleSpan spanText = new SpannableString("吾将上下而求索 -- http://google.com"); //Typeface.BOLD_ITALIC:粗体+斜体 spanText.setSpan(new StyleSpan(Typeface.BOLD_ITALIC), 5, 7, Spannable.SPAN_INCLUSIVE_EXCLUSIVE); displayText.append("\n"); displayText.append(spanText); // SubscriptSpan spanText = new SpannableString("吾将上下而求索 -- http://google.com"); spanText.setSpan(new SubscriptSpan(), 5, 7, Spannable.SPAN_INCLUSIVE_EXCLUSIVE); displayText.append("\n"); displayText.append(spanText); // SuperscriptSpan spanText = new SpannableString("吾将上下而求索 -- http://google.com"); spanText.setSpan(new SuperscriptSpan(), 5, 7, Spannable.SPAN_INCLUSIVE_EXCLUSIVE); displayText.append("\n"); displayText.append(spanText); // TextAppearanceSpan spanText = new SpannableString("吾将上下而求索 -- http://google.com"); //若需自定义TextAppearance,可以在系统样式上进行修改 spanText.setSpan(new TextAppearanceSpan(this, android.R.style.TextAppearance_Medium), 5, 7, Spannable.SPAN_INCLUSIVE_EXCLUSIVE); displayText.append("\n"); displayText.append(spanText); // TypefaceSpan spanText = new SpannableString("吾将上下而求索 -- http://google.com"); //若需使用自定义字体,可能要重写类TypefaceSpan spanText.setSpan(new TypefaceSpan("monospace"), 5, 7, Spannable.SPAN_INCLUSIVE_EXCLUSIVE); displayText.append("\n"); displayText.append(spanText); // URLSpan spanText = new SpannableString("吾将上下而求索 -- GOOGLE"); spanText.setSpan(new URLSpan("http://google.com"), 10, spanText.length(), Spannable.SPAN_INCLUSIVE_EXCLUSIVE); displayText.append("\n"); displayText.append(spanText); //让URLSpan可以点击 displayText.setMovementMethod(new LinkMovementMethod()); } }
效果图片:
多说一句:当开发中需要做一些特殊操作时,可以考虑继承以上合适的Span,然后做相关处理!
相关推荐
带图片背景的span
交换机SPAN技术简介+Cisco配置示例.docx
Kotlin编写,封装常用的Span,简化SpannableString的编写
主要为大家详细介绍了Android自定义可点击的ImageSpan并在TextView中内置"View",具有一定的参考价值,感兴趣的小伙伴们可以参考一下
android实现TextView文字部分渐变色;LinearGradientFontSpan SpannableString
span标签 span 表示行内元素,相当于 inline 属性,只会根据元素的宽度自行展开,自己设置宽度,不起作用。 那如果我特别希望将 span 元素设置为宽度且不设置元素呢?下面通过几个方式去实现。 方式一 设置 span ...
Android中EditText的常用效果实现,对于EditText输入表情,验证输入等问题。
交换机SPAN技术简介+Cisco配置示例[定义].pdf
RichEditor基于原生EditText + span实现的Android富文本编辑器组件描述该组件是基于原生EditText + span的方式实现的,逐步提供一个功能齐全且使用方便的Android富文本编辑器。主要支持了加粗斜体等行内样式,标题...
Android SpannableString实现TextView不同大小文字居中显示。
博客地址:https://blog.csdn.net/kong_gu_you_lan/article/details/78134068 GitHub地址:https://github.com/alidili/Demos/tree/master/FillBlankQuestionDemo
博文 “display:block-inline形式的Span或Div中添加文字后,导致Span或Div排版掉落、错位”的原因及解决方法 里的示例代码
RTMovementMethod: 继承自Android原生的LinkMovementMethod,重写onTouchEvent方法,优化了ClickSpan(点击响应的文字区域)的点击响应。 Resolver:一个接口,我们需要实现一种支持富文本类型
1.所谓块元素,是以另起一行开始渲染的元素,行内元素则不需另起一行,测试一下下面的代码你会有更形象的理解: 测试<span>紧跟前面的"测试"显示</span>这里会另起一行显示</div> 2.块元素和行内元素也不是...
span标签超长部分隐藏
FESTO 压力传感器 SPAN手册
CISCO官方配置手册SPAN
在Edittext中替换从数据库中取出的图片,用split进行文字分割。
SPAN Plus是免费软件SPAN插件的扩展版本:SPAN Plus提供了几个额外的功能,如PNG文件导出,实时频谱导入/导出跨轨频谱比较,和静态频谱显示。 SPAN Plus为您提供了一个非常灵活的“模式”系统,您可以使用它来设置您...