/**
* TextView - 文本显示控件
*
* 演示如何通过 SpannableString 或 SpannableStringBuilder 来设置 TextView 中的文本的显示样式
* SpannableStringBuilder 对比 SpannableString 的区别就是,可以对 SpannableStringBuilder 中的文本做编辑(比如 append, insert 之类的)
*
* ForegroundColorSpan - 文本颜色
* BackgroundColorSpan - 背景颜色
* StrikethroughSpan - 删除线
* UnderlineSpan - 下划线
* SuperscriptSpan - 上标
* SubscriptSpan - 下标
* StyleSpan - 样式(粗体,斜体)
* TypefaceSpan - 字体
* AbsoluteSizeSpan - 文本绝对大小
* RelativeSizeSpan - 文本相对大小(当前文本应该显示的大小的缩放倍数)
* ScaleXSpan - X 轴方向的缩放倍数
* TextAppearanceSpan - 文本样式(通过指定 style 资源的方式)
* URLSpan - 超链接
* ClickableSpan - 可点击
* MaskFilterSpan - 修饰效果(模糊,浮雕)
* DynamicDrawableSpan - 将指定的文字替换为图片(抽象类)
* ImageSpan - 将指定的文字替换为图片(ImageSpan 继承自 DynamicDrawableSpan)
*/
package com.webabcd.androiddemo.view.text;
import android.graphics.BlurMaskFilter;
import android.graphics.Color;
import android.graphics.EmbossMaskFilter;
import android.graphics.MaskFilter;
import android.graphics.Typeface;
import android.graphics.drawable.Drawable;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.text.Spannable;
import android.text.SpannableString;
import android.text.SpannableStringBuilder;
import android.text.Spanned;
import android.text.TextPaint;
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.TypefaceSpan;
import android.text.style.URLSpan;
import android.text.style.UnderlineSpan;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;
import com.webabcd.androiddemo.R;
public class TextViewDemo5 extends AppCompatActivity {
private TextView _textView1;
private TextView _textView2;
private TextView _textView3;
private TextView _textView4;
private TextView _textView5;
private TextView _textView6;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_view_text_textviewdemo5);
_textView1 = (TextView) findViewById(R.id.textView1);
_textView2 = (TextView) findViewById(R.id.textView2);
_textView3 = (TextView) findViewById(R.id.textView3);
_textView4 = (TextView) findViewById(R.id.textView4);
_textView5 = (TextView) findViewById(R.id.textView5);
_textView6 = (TextView) findViewById(R.id.textView6);
// 设置文本颜色,背景颜色,删除线,下划线,上标,下标
sample1();
// 设置文本样式(粗体,斜体),字体,大小
sample2();
// 设置文本样式(通过指定 style 资源的方式),超链接,可点击
sample3();
// 设置文本的修饰效果(模糊,浮雕)
sample4();
// 将指定的文字替换为图片
sample5();
// Spannable.SPAN_EXCLUSIVE_EXCLUSIVE, Spannable.SPAN_EXCLUSIVE_INCLUSIVE, Spannable.SPAN_INCLUSIVE_EXCLUSIVE, Spannable.SPAN_INCLUSIVE_INCLUSIVE 的区别
sample6();
}
private void sample1() {
String content = "hello: webabcdwanglei";
// 文本颜色
ForegroundColorSpan foregroundColorSpan = new ForegroundColorSpan(Color.parseColor("#FF0000"));
// 背景颜色
BackgroundColorSpan backgroundColorSpan = new BackgroundColorSpan(Color.parseColor("#00FF00"));
// 删除线
StrikethroughSpan strikethroughSpan = new StrikethroughSpan();
// 下划线
UnderlineSpan underlineSpan = new UnderlineSpan();
// 上标
SuperscriptSpan superscriptSpan = new SuperscriptSpan();
// 下标
SubscriptSpan subscriptSpan = new SubscriptSpan();
// 将需要显示的文字转换为 SpannableStringBuilder 对象
SpannableStringBuilder spannableStringBuilder = new SpannableStringBuilder(content);
// 设置 span(可以设置多个,但是同一个 span 对象只能使用一次)
// 第一个参数:需要设置的 span 对象
// 第二个参数:需要设置该 span 的文字的起始位置
// 第三个参数:需要设置该 span 的文字的结束位置
// 第四个参数:后面再说
spannableStringBuilder.setSpan(foregroundColorSpan, 0, 6, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
spannableStringBuilder.setSpan(backgroundColorSpan, 0, 6, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
spannableStringBuilder.setSpan(strikethroughSpan, 0, 6, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
spannableStringBuilder.setSpan(underlineSpan, 0, 6, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
spannableStringBuilder.setSpan(superscriptSpan, 7, 14, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
spannableStringBuilder.setSpan(subscriptSpan, 14, 21, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
// 删除指定的 span
// spannableStringBuilder.removeSpan(subscriptSpan);
// 显示指定的 SpannableStringBuilder 对象
_textView1.setText(spannableStringBuilder);
}
private void sample2() {
String content = "hello: webabcd wanglei android";
// 设置样式(Typeface.NORMAL, Typeface.BOLD, Typeface.ITALIC, Typeface.BOLD_ITALIC),具体的 style 的说明参见 TextViewDemo2 中的说明
StyleSpan styleSpan = new StyleSpan(Typeface.BOLD_ITALIC);
// 设置字体,具体的 typeface 的说明参见 TextViewDemo2 中的说明
TypefaceSpan typefaceSpan = new TypefaceSpan("monospace");
// 文本绝对大小
AbsoluteSizeSpan absoluteSizeSpan = new AbsoluteSizeSpan(24, true);
// 文本相对大小(当前文本应该显示的大小的缩放倍数)
RelativeSizeSpan relativeSizeSpan = new RelativeSizeSpan(1.5f);
// X 轴方向的缩放倍数
ScaleXSpan scaleXSpan = new ScaleXSpan(3.0f);
// 将需要显示的文字转换为 SpannableString 对象
SpannableString spanString = new SpannableString(content);
// 设置 span(可以设置多个,但是同一个 span 对象只能使用一次)
// 第一个参数:需要设置的 span 对象
// 第二个参数:需要设置该 span 的文字的起始位置
// 第三个参数:需要设置该 span 的文字的结束位置
// 第四个参数:后面再说
spanString.setSpan(styleSpan, 0, 6, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
spanString.setSpan(typefaceSpan, 0, 6, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
spanString.setSpan(absoluteSizeSpan, 7, 14, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
spanString.setSpan(relativeSizeSpan, 15, 22, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
spanString.setSpan(scaleXSpan, 23, 30, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
// 删除指定的 span
// spanString.removeSpan(scaleXSpan);
// 显示指定的 SpannableString 对象
_textView2.setText(spanString);
}
private void sample3() {
String content = "hello: clickme clickme";
// 文本的样式,此处指定的样式资源如下
沐知全栈开发
- 粉丝: 5817
- 资源: 5226
最新资源
- 音圈电机控制,双闭环pid控制
- 北方苍鹰优化算法(NGO)求解混合储能容量配置经济成本 2022年新算法哦 1、微电网混合储能容量配置优化 适合(光伏、风电)模型,(有参考文献) 2、目标经济性、可靠性负荷失电率, 3、matl
- comsol线偏振转多重干涉
- 固高GTS8轴或4轴控制卡,视觉点胶涂覆,伺服运动控制
- comsol声学超材料 吸隔声仿真计算模型可以个人定制任意声学模型
- 大厂FPGA AXI verilog源代码,4个master+10个slave配置,企业级应用源码,适合需要学习ic设计验证及soc开发的工程师 提供databook资料和verilog完整源代码
- comsol光子晶体波导法诺共振
- comsol模型 堤坝边坡稳定性 利用流固耦合接口
- C#开发上位机控制系统 主控界面,可以PLC通讯,可以接入485通讯 可多样形成工艺编辑界面,避免Excel表格的繁琐 曲线显示美观,纵横坐标可以放缩,游标可以显示具体数值
- a星+动态窗口法的融合路径规划算法 可自行更改地图,定义起始点目标点位置、未知障碍物位置 matlab实现
- comsol相控阵三维聚焦探头 7*7阵元三维相控阵聚焦探头,焦点大概在20mm位置处,介质为水,频率设的0.5MHz,焦距可调 效果看动画吧 图1 2 3分别为剖面下的声场收缩 聚焦 扩散时刻图
- comsol不同温度下相变材料二氧化钒VO2设置 包含可见光近红外太赫兹波段
- 光伏并网 单相 三相 逆变 lcl 仿真 光伏并网 研究电能质量 有源滤波器 谐波检测 功率因数 光伏对配电网继电保护影响 5kw光伏并网逆变器的设计 本硕电气工程
- stm32低压无感BLDC方波控制方案 1.启动传统三段式,强拖的步数少,启动快,任意电机基本可以顺利启动切闭环; 2.配有英非凌电感法,脉冲注入算法; 3.开环,速度环,限流环; 4.欠压,过压
- SMT轨迹导入程序,C#导入CAD的DXF文件,生成G代码,
- Matlab光伏加蓄电池发电系统simulink仿真模型
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈