- 浏览: 181045 次
- 性别:
- 来自: 浙江
文章分类
最新评论
参考链接:
http://www.cnblogs.com/jisheng/archive/2013/01/10/2854088.html
http://www.jianshu.com/p/d4349a4ca216
package com.lml.activity.spanablestrtest;
import android.content.res.Resources;
import android.graphics.BlurMaskFilter;
import android.graphics.Color;
import android.graphics.EmbossMaskFilter;
import android.graphics.Typeface;
import android.graphics.drawable.Drawable;
import android.support.v4.content.res.ResourcesCompat;
import android.support.v7.app.AppCompatActivity;
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.ClickableSpan;
import android.text.style.DynamicDrawableSpan;
import android.text.style.ForegroundColorSpan;
import android.text.style.ImageSpan;
import android.text.style.MaskFilterSpan;
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.URLSpan;
import android.text.style.UnderlineSpan;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView tv_show = (TextView)findViewById(R.id.tv_strshow);
SpannableString spanText = getBackgroundColorSpanStr("BackgroundColor");
tv_show.append(spanText);
tv_show.append("\n");
spanText = getForegroundColorSpanStr("ForegroundColor");
tv_show.append(spanText);
tv_show.append("\n");
spanText = getBlurMaskSpanStr("BlurMask");
tv_show.append(spanText);
tv_show.append("\n");
spanText = getEmbossMaskSpanStr("EmbossMask");
tv_show.append(spanText);
tv_show.append("\n");
spanText = getStrikethroughSpanStr("Strikethrough");
tv_show.append(spanText);
tv_show.append("\n");
spanText = getUnderlineSpanStr("Underline");
tv_show.append(spanText);
tv_show.append("\n");
spanText = getAbsoluteSizeSpanStr("AbsoluteSize");
tv_show.append(spanText);
tv_show.append("\n");
spanText = getDynamicDrawableSpanStr("DynamicDrawable");
tv_show.append(spanText);
tv_show.append("\n");
spanText = getImageSpanStr("Image");
tv_show.append(spanText);
tv_show.append("\n");
spanText = getScaleXSpanStr("ScaleX");
tv_show.append(spanText);
tv_show.append("\n");
spanText = getStyleSpanStr("Style");
tv_show.append(spanText);
tv_show.append("\n");
spanText = getClickableSpanStr("Clickable");
tv_show.append(spanText);
tv_show.append("\n");
spanText = getSubscriptSpanStr("Subscript");
tv_show.append(spanText);
tv_show.append("\n");
spanText = getSuperscriptSpanStr("Superscript");
tv_show.append(spanText);
tv_show.append("\n");
spanText = getURLSpanStr("URLSpanStr");
tv_show.append(spanText);
tv_show.append("\n");
spanText = getTextAppearanceSpanStr("TextAppearance");
tv_show.append(spanText);
tv_show.setMovementMethod(LinkMovementMethod.getInstance());
}
/**
* 背景色
* @param str
* @return
*/
private SpannableString getBackgroundColorSpanStr(String str){
SpannableString spanText = new SpannableString(str);
spanText.setSpan(new BackgroundColorSpan(Color.BLUE), 0, spanText.length(),
Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
return spanText ;
}
/**
* 前景色
* @param str
* @return
*/
private SpannableString getForegroundColorSpanStr(String str){
SpannableString spanText = new SpannableString(str);
spanText.setSpan(new ForegroundColorSpan(Color.BLUE), 0, spanText.length(),
Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
return spanText ;
}
/**
* 模糊
* @param str
* @return
*/
private SpannableString getBlurMaskSpanStr(String str) {
SpannableString spanText = new SpannableString(str);
MaskFilterSpan maskFilterSpan = new MaskFilterSpan(new BlurMaskFilter(3, BlurMaskFilter.Blur.OUTER));
spanText.setSpan(maskFilterSpan, 0, spanText.length(), Spannable.
SPAN_INCLUSIVE_EXCLUSIVE);
return spanText;
}
/**
* 浮雕
* @param str
* @return
*/
private SpannableString getEmbossMaskSpanStr(String str) {
SpannableString spanText = new SpannableString(str);
//浮雕(EmbossMaskFilter)
MaskFilterSpan maskFilterSpan = new MaskFilterSpan(new EmbossMaskFilter(new float[]{1,1,3}, 1.5f, 8, 3));
spanText.setSpan(maskFilterSpan, 0, spanText.length(), Spannable.
SPAN_INCLUSIVE_EXCLUSIVE);
return spanText;
}
/**
* 光栅
* @param str
* @return
*/
private SpannableString getStrikethroughSpanStr(String str){
SpannableString spanText = new SpannableString(str);
spanText.setSpan(new StrikethroughSpan(), 0, spanText.length(), Spannable.
SPAN_INCLUSIVE_EXCLUSIVE);
return spanText ;
}
/**
* 下划线
* @param str
* @return
*/
private SpannableString getUnderlineSpanStr(String str){
SpannableString spanText = new SpannableString(str);
spanText.setSpan(new UnderlineSpan(), 0, spanText.length(), Spannable.
SPAN_INCLUSIVE_EXCLUSIVE);
return spanText ;
}
/**
* 绝对大小
* @param str
* @return
*/
private SpannableString getAbsoluteSizeSpanStr(String str){
SpannableString spanText = new SpannableString(str);
spanText.setSpan(new AbsoluteSizeSpan(20, true), 0, spanText.length(), Spannable.
SPAN_INCLUSIVE_EXCLUSIVE);
return spanText ;
}
/**
* 动态图
* @param str
* @return
*/
private SpannableString getDynamicDrawableSpanStr(String str){
SpannableString spanText = new SpannableString(str);
DynamicDrawableSpan drawableSpan = new DynamicDrawableSpan(
DynamicDrawableSpan.ALIGN_BOTTOM) {
@Override
public Drawable getDrawable() {
Drawable d = ResourcesCompat.getDrawable(getResources(), R.mipmap.ic_launcher, null);
d.setBounds(0, 0, 50, 50);
return d;
}
};
spanText.setSpan(drawableSpan, 1, 2, Spannable.
SPAN_INCLUSIVE_EXCLUSIVE);
return spanText ;
}
/**
* 图片
* @param str
* @return
*/
private SpannableString getImageSpanStr(String str){
SpannableString spanText = new SpannableString(str);
Drawable d = ResourcesCompat.getDrawable(getResources(), R.mipmap.ic_launcher, null);
d.setBounds(0, 0, 50, 50);
spanText.setSpan(new ImageSpan(d), 3, 4, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
return spanText ;
}
/**
* 缩放
* @param str
* @return
*/
private SpannableString getScaleXSpanStr(String str){
SpannableString spanText = new SpannableString(str);
spanText.setSpan(new ScaleXSpan(3.8f), 2, 4, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
return spanText ;
}
/**
* 样式
* @param str
* @return
*/
private SpannableString getStyleSpanStr(String str){
SpannableString spanText = new SpannableString(str);
spanText.setSpan(new StyleSpan(Typeface.BOLD_ITALIC), 2, 3,
Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
return spanText ;
}
/**
* 点击
* @param str
* @return
*/
private SpannableString getClickableSpanStr(String str){
SpannableString spanText = new SpannableString(str);
spanText.setSpan(new ClickableSpan() {
@Override
public void onClick(View widget) {
Toast.makeText(MainActivity.this,"onclick",Toast.LENGTH_SHORT).show();
}
}, 3, spanText.length(),
Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
return spanText ;
}
/**
* 下标
* @param str
* @return
*/
private SpannableString getSubscriptSpanStr(String str){
SpannableString spanText = new SpannableString(str);
spanText.setSpan(new SubscriptSpan(), 2, 3, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
return spanText ;
}
/**
* 上标
* @param str
* @return
*/
private SpannableString getSuperscriptSpanStr(String str){
SpannableString spanText = new SpannableString(str);
spanText.setSpan(new SuperscriptSpan(), 2, 3, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
return spanText ;
}
/**
* url
* @param str
* @return
*/
private SpannableString getURLSpanStr(String str){
SpannableString spanText = new SpannableString(str);
spanText.setSpan(new URLSpan("http://www.baidu.com"), 3, spanText.length(),
Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
return spanText ;
}
/**
* 文本外貌
* @param str
* @return
*/
private SpannableString getTextAppearanceSpanStr(String str){
SpannableString spanText = new SpannableString(str);
spanText.setSpan(new TextAppearanceSpan(this, android.R.style.TextAppearance_Medium),
2, 3, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
return spanText ;
}
}
发表评论
-
关于Android的webSocket的简单使用
2017-05-12 14:34 920使用第三方jar: autobahn-0.5.0.jar 连 ... -
Comparator自定义排序的使用
2017-05-11 14:18 710java对于集合的自定义排序方法有: Arrays.sort ... -
查看Android虚拟机文件相关命令
2017-05-02 14:12 516我们在虚拟机下添加文件后,想查看下文件是否正确创建,可在win ... -
android6.0创建文件问题
2017-05-02 12:58 539Android在6.0有了动态权限管理,在文件创建时就需要动态 ... -
xutils的http模块的简单使用
2017-04-28 16:05 478先导入xutils相关依赖: compile 'org.xut ... -
Litepal的简单使用
2017-04-27 17:21 593相关包下载地址:https://github.com/Lite ... -
Android下拉刷新上拉加载控件的使用
2017-04-21 10:46 790参考链接:http://www.jianshu.com/p/6 ... -
图片加载框架
2017-04-19 16:29 361图片加载框架: picasso ImageLoader -
Android的Service总结
2017-04-17 15:46 413参考链接:http://www.cnblogs.com/lwb ... -
解决ViewPager的addOnPageChangeListener不加载第一个的问题
2017-03-18 17:53 2580今天在使用ViewPager的时候发现个问题。 需求如下: ... -
clone方法的使用
2017-01-04 10:14 513由于Java有引用这一说,当两个变量指向同一块内存时,改变 ... -
Fragment无法切换问题
2016-12-16 14:57 2069Android有一个回收机制,当内存不足时,会自动回收相关内存 ... -
关于Material Design的CollapsingToolbarLayout初次使用
2016-12-16 13:38 570最近了解了下CollapsingToolbarLayout的使 ... -
MVP模式的学习
2016-12-10 15:15 612以前我写代码都是使用MVC模式,这种模式使Activity变得 ... -
Material Design:Android Design Support Library 介绍
2016-12-10 14:14 420参考链接 : https://blog.leancloud.c ... -
getResources().getDrawable方法的废弃
2016-12-10 13:20 1157参考链接:http://www.jianshu.com/p/e ... -
关于AndroidStudio的Unsupported major.minor version 52.0异常
2016-12-10 13:15 2332参考链接:http://blog.csdn.net/fakin ... -
Android记录
2015-06-01 10:54 602http://tools.android-studio.org ... -
android自定义控件相关使用
2015-04-24 16:53 569用代码简单介绍下自定义控件的使用: 先看主activity: ... -
android使用html标签
2015-03-13 20:42 638有些时候我们需要在一个textview上,对部分字体进行特殊效 ...
相关推荐
示例1:使用 SpannableString,试了一下效果一般。(新手推荐) 示例2:后面也是参考了前辈的代码,自己重写了几个组件,并加以工具类的控制,将效果控制的更好。(推荐) 我以后所有的资源都挂0分,方便网友们下载,也...
Kotlin编写,封装常用的Span,简化SpannableString的编写
御用SpannableString加特殊字符加颜色。
圆角背景的SpannableString,后期会加入些许封装
解决TextView自动换行的排版混乱 允许设置SpannableString等特殊属性 至繁归于至简
SpannableString 来改变textView中http协议,手机号,已经你想要改变的字的颜色,以及添加onClick事件
SpannableString在开发中的常用方法,字体、颜色、大小、链接、替换图片等
TextView的各种样式,比如:下划线,颜色,大小,各种Span的使用
SpannableString 一个TextView不同的效果实现,实现了点击事件,下划线,局部字体变大,局部字体颜色变化,删除线等等,
博客《SpannableString与SpannableStringBuilder》对应源码,博客地址:http://blog.csdn.net/harvic880925/article/details/38984705
SpannableString,列出大多数常用的方法和实例供参考。
优化后的QQ、微信表情: 主要是SpannableString和正则表达式的应用。 [注:本内容来自网络,在此分享仅为帮助有需要的网友,如果侵犯了您的权利,麻烦联系我,我会第一时间删除,谢谢您。]
使用Spannable设置TextView的字体的各种样式。详情请看http://blog.csdn.net/nxiangbo/article/details/51132737
这是一个通过Spannable来丰富TextView显示效果的demo程序。
包含了设置文本的前景色,背景色,大小,图文混排,上下标等
本文实例讲述了Android TextView使用SpannableString设置复合文本的方法。分享给大家供大家参考,具体如下: TextView通常用来显示普通文本,但是有时候需要对其中某些文本进行样式、事件方面的设置。Android系统...
Android SpannableString设置超链接、颜色、字体等属性 在Android中,TextView是我们最常用的用来显示文本的控件。 一般情况下,TextView中的文本都是一个样式。那么如何对于TextView中各个部分的文本来设置字体...
Android 使用SpannableString在TextView中插入表情、超链接、文字变大、加粗,附源码及apk
详情请移步:http://blog.csdn.net/fengkuanghun/article/details/7904284
文本样式设置之SpannableString类的应用