Android TextView通过SpannableString设置字体、大小、颜色、样式、超级链接

代码应该都能看明白

public class MainActivity extends ActionBarActivity {private TextView tv, tv2;private SpannableString sStr, sStr2;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);tv = (TextView) this.findViewById(R.id.textView1);tv2 = (TextView) this.findViewById(R.id.textView2);//创建一个SpannableString对象sStr = new SpannableString("最是那一低头的温柔,像一朵水莲花不胜凉风的娇羞,道一声珍重,道一声珍重,那一声珍重里有蜜甜的忧愁");//设置字体(default,default-bold,monospace,serif,sans-serif)sStr.setSpan(new TypefaceSpan("default"), 0, 2, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);sStr.setSpan(new TypefaceSpan("default-bold"), 2, 4, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);sStr.setSpan(new TypefaceSpan("monospace"), 4, 6, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);sStr.setSpan(new TypefaceSpan("serif"), 6, 8, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);sStr.setSpan(new TypefaceSpan("sans-serif"), 8, 10, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);//设置字体大小(绝对值,单位:像素),第二个参数boolean dip,如果为true,表示前面的字体大小单位为dip,否则为像素sStr.setSpan(new AbsoluteSizeSpan(20), 10, 12, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);sStr.setSpan(new AbsoluteSizeSpan(20, true), 12, 14, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);		//设置字体大小(相对值,单位:像素) 参数表示为默认字体大小的多少倍   ,0.5表示一半sStr.setSpan(new RelativeSizeSpan(0.5f), 14, 16, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);  //设置字体前景色   sStr.setSpan(new ForegroundColorSpan(Color.RED), 16, 18, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);  //设置字体背景色   sStr.setSpan(new BackgroundColorSpan(Color.CYAN), 18, 20, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);//设置字体样式: NORMAL正常,BOLD粗体,ITALIC斜体,BOLD_ITALIC粗斜体   sStr.setSpan(new StyleSpan(android.graphics.Typeface.NORMAL), 20, 21, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); sStr.setSpan(new StyleSpan(android.graphics.Typeface.BOLD), 21, 22, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);   sStr.setSpan(new StyleSpan(android.graphics.Typeface.ITALIC), 22, 23, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);   sStr.setSpan(new StyleSpan(android.graphics.Typeface.BOLD_ITALIC), 23, 24, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);//设置下划线   sStr.setSpan(new UnderlineSpan(), 24, 26, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);             //设置删除线   sStr.setSpan(new StrikethroughSpan(), 26, 28, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);//设置上下标   sStr.setSpan(new SubscriptSpan(), 28, 30, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);     sStr.setSpan(new SuperscriptSpan(), 30, 32, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); //设置字体大小(相对值,单位:像素) 参数表示为默认字体宽度的多少倍 ,2.0f表示默认字体宽度的两倍,即X轴方向放大为默认字体的两倍,而高度不变sStr.setSpan(new ScaleXSpan(2.0f), 32, 34, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); //设置项目符号   sStr.setSpan(new BulletSpan(android.text.style.BulletSpan.STANDARD_GAP_WIDTH,Color.GREEN), 0 ,sStr.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); //第一个参数表示项目符号占用的宽度,第二个参数为项目符号的颜色//设置图片   Drawable drawable = getResources().getDrawable(R.drawable.ic_launcher);    drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());sStr.setSpan(new ImageSpan(drawable), 24, 26, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);tv.setText(sStr);tv.setMovementMethod(LinkMovementMethod.getInstance());sStr2 = new SpannableString("电话邮件百度一下短信彩信进入地图");//超级链接(需要添加setMovementMethod方法附加响应)   sStr2.setSpan(new URLSpan("tel:8008820"), 0, 2, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);     //电话      sStr2.setSpan(new URLSpan("mailto:kejunlu@qq.com"), 2, 4, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);     //邮件      sStr2.setSpan(new URLSpan("http://www.baidu.com"), 4, 8, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);     //网络      sStr2.setSpan(new URLSpan("sms:10086"), 8, 10, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);     //短信   使用sms:或者smsto:   sStr2.setSpan(new URLSpan("mms:10086"), 10, 12, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);     //彩信   使用mms:或者mmsto:   sStr2.setSpan(new URLSpan("geo:32.123456,-17.123456"), 12, 16, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);     //地图 tv2.setText(sStr2);tv2.setMovementMethod(LinkMovementMethod.getInstance());}

效果图:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/558235.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

winform项目_winform项目——仿QQ即时通讯程序01:原理及项目分析

即时通讯程序,腾讯QQ可以说是一家独大,虽然市场上仍然有类似QQ的即时通讯程序,但是基本上面向的对象都是特定人群。那么,现在做一个即时通讯的软件还有意义吗?在我看来,意义非常大。作为一个学习编程的人&a…

Android面试基础一

Android面试基础二-原理及常见问题 目录1、四大组件1)Activity2)Service3)ContentProvider4)Broadcast Receiver2、四大组件的生命周期和简单用法1)Activity2)Service3)BroadcastReceiver4&…

python怎么用大数据分析师_如何七周成为数据分析师18:Python的新手教程

本文是《怎样七周成为数据剖析师》的第十八篇教程,假定想要了解写作初衷,能够先行阅读七周指南。温馨提示:假定您曾经熟习Python,大可不用再看这篇文章,或只选择部分。Python是近年来最火爆的言语,曾经作为…

Android面试基础二-原理及常见问题

Android 面试基础一 目录Android源码相关分析1、Android属性动画实现原理2、补间动画实现原理3、Android各个版本API的区别4、Requestlayout,onlayout,onDraw,DrawChild区别与联系5、invalidate和postInvalidate的区别及使用6、Activity-Wind…

python数据展示库_收藏!盘点很实用的数据科学Python库

数据科学是一门研究数据并从中挖掘信息的学科。它不要求自创或学习新的算法,只需要知道怎么样研究数据并解决问题。这一过程的关键点之一就在于使用合适的库。本文概述了数据科学中常用的、并且有一定重要性的库。在进入正题之前,本文先介绍了解决数据科…

Android日志[进阶篇]二-分析堆栈轨迹(调试和外部堆栈)

Android日志[进阶篇]一-使用 Logcat 写入和查看日志 Android日志[进阶篇]二-分析堆栈轨迹(调试和外部堆栈) Android日志[进阶篇]三-Logcat命令行工具 Android日志[进阶篇]四-获取错误报告 Android日志[进阶篇]五-阅读错误报告 目录调试中的堆栈轨迹从外部来源打开堆栈轨迹监控剪…

python股票数据分析实验报告_Python实验报告

一、实验原理(要求、任务等)(一)、Python的开发环境Python诞生于20世纪90年代初,是一种解释型、面向对象、动态数据类型的高级程序设计语言,是最受欢迎的程序设计语言之一。编写、编译和运行Python程序有以下3种方法。1.使用交互式解释器2.使用Windows命…

Android日志[进阶篇]一-使用 Logcat 写入和查看日志

Android日志[进阶篇]一-使用 Logcat 写入和查看日志 Android日志[进阶篇]二-分析堆栈轨迹(调试和外部堆栈) Android日志[进阶篇]三-Logcat命令行工具 Android日志[进阶篇]四-获取错误报告 Android日志[进阶篇]五-阅读错误报告 目录查看应用日志写入日志消息Logcat 消息格式设置…

哈希表数据结构_算法与数据结构-哈希表

前面我们已经讲到了数组和链表,数组能通过下标 O(1) 访问,但是删除一个中间元素却要移动其他元素,时间 O(n)。 循环双端链表倒是可以在知道一个节点的情况下迅速删除它,但是吧查找又成了 O(n)。难道就没有一种方法可以快速定位和删…

Android日志[进阶篇]三-Logcat 命令行工具

Android日志[进阶篇]一-使用 Logcat 写入和查看日志 Android日志[进阶篇]二-分析堆栈轨迹(调试和外部堆栈) Android日志[进阶篇]三-Logcat命令行工具 Android日志[进阶篇]四-获取错误报告 Android日志[进阶篇]五-阅读错误报告 目录日志记录系统概览命令行语法logcat命令行选项过…

python while语法结构_python语法之流程控制(if while for)

一.python语法之流程控制1.1什么是流程控制?流程控制即控制流程,具体指控制程序的执行流程,而程序的执行流程分为三种结构:顺序结构(之前我们写的代码都是顺序结构)、分支结构(判断)、循环结构(while for)二.分支结构2.1 什么是分…

Android日志[进阶篇]四-获取错误报告

Android日志[进阶篇]一-使用 Logcat 写入和查看日志 Android日志[进阶篇]二-分析堆栈轨迹(调试和外部堆栈) Android日志[进阶篇]三-Logcat命令行工具 Android日志[进阶篇]四-获取错误报告 Android日志[进阶篇]五-阅读错误报告 目录前言从设备上获取错误报告从 Android 模拟器上…

下列哪个适合做链栈_朋友圈人格图鉴:三天可见 vs 全部可见,哪个更适合做恋人?...

你们的朋友圈里有没有这样几种人&#xff1f;<< 朋友圈大赏 >>你可能已经对这些朋友圈的风格习以为常&#xff0c;其实&#xff0c;每个人在朋友圈展示的语言、行为&#xff0c;可能默默揭示着一个人自己原本是怎样的人、想成为什么样的人&#xff0c;以及与他人的…

python玫瑰花数量的含义_玫瑰花数量代表的含义

1朵玫瑰代表——我的心中只有你 ONLY YOU&#xff01;2朵玫瑰代表——这世界只有我俩&#xff01;3朵玫瑰代表——我爱你 I LOVE YOU&#xff01;4朵玫瑰代表——至死不渝&#xff01;5朵玫瑰代表——由衷欣赏&#xff01;6朵玫瑰代表——互敬 互爱 互谅&#xff01;7朵玫瑰代表…

Android日志[进阶篇]五-阅读错误报告

Android日志[进阶篇]一-使用 Logcat 写入和查看日志 Android日志[进阶篇]二-分析堆栈轨迹(调试和外部堆栈) Android日志[进阶篇]三-Logcat命令行工具 Android日志[进阶篇]四-获取错误报告 Android日志[进阶篇]五-阅读错误报告 目录Logcat查看事件日志ANR 和死锁找出无响应的应用…

iatf16949内审员_申请IATF16949认证有什么要求

1、证件要求必须要提供三证合一的营业执照&#xff08;在有效期内&#xff09;&#xff0c;营业执照的范围必须与申请IATF16949认证范围一致。2、处于汽车供应链的证明因为IATF16949认证要求厂家必须是直接与生产汽车有关的&#xff0c;具有加工制造能力&#xff0c;并通过这种…

GenseeSDK DocView(OpenGL)引起的TextView显示黑块

现象 先上图&#xff1a; 正常的图&#xff1a; 来到这的大侠是否也出现了同样的问题。 操作与描述 退出直播播放器后&#xff0c;整个app界面所有的TextView(EditText/Button)都显示为黑块。 快速解决 退出直播或点播后不要调用DocView的closeDoc函数即可&#xff0c;当…

python医疗发票 信息抽取_PYTHON网络爬虫与信息提取[信息的组织与提取](单元五)...

1 三种信息类型的简介xml : extensible markup language与html非常相似现有html后有xmlxml是html发展来的 扩展 通用json 类型javascript object notation有类型的键值对 表达的方式一个key对应多个值"key1":["asas",asas]嵌套使用"name":{&quo…

Android WebView https白屏、Http和Https混合问题、证书配置和使用

目录前言启用https后白屏&#xff08;证书错误&#xff09;修改处理WebView中Http和Https混合问题处理办法Webview的几种内容加载模式证书配置或处理https请求的证书okhttp进行请求&#xff1a;HttpsURLConnection忽略证书前言 原有项目中有部分界面是用webview展现的h5页面&am…

Kotlin AAPT: error: resource android:attr/lStar not found.

这是使用kotlin之后发生的错误。 打开 android/app 工程全局搜索androidx.core:core-ktx: 全局搜索快捷键 ctrlshift f将搜索到的内容修改为androidx.core:core-ktx:1.6.0 也就是说将androidx.core:core-ktx: 修改为androidx.core:core-ktx:1.6.0,一般情况下是在module的中的b…