SpannableString 记录

Android中TextView图文并茂,可以同时放图片和文字(多用于聊天记录) 这里提供一种不错的实现方法SpannableString 先取得图片资源 Drawable drawable = getResources().getDrawable(R.drawable.emoji1); drawable.setBounds(0, 0, 40, 40); new一个SpannableString SpannableString spannable 阅读详情

TextView是用来显示文本的,有时需要给TextView中的个别字设置为超链接,或者设置个别字的颜色、字体等,那就需要用到Spannable对象,可以借助Spannable对象实现以上设置

myTextView = (TextView) this.findViewById(R.id.myTextView);   
    
  //创建一个 SpannableString对象   
  SpannableString sp = new SpannableString("这句话中有百度超链接,有高亮显示,这样,或者这样,还有斜体.");   
  //设置超链接   
  sp.setSpan(new URLSpan("http://www.baidu.com"), 5, 7,   
  Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);   
  //设置高亮样式一   
  sp.setSpan(new BackgroundColorSpan(Color.RED), 17 ,19,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);   
  //设置高亮样式二   
  sp.setSpan(new ForegroundColorSpan(Color.YELLOW),20,24,Spannable.SPAN_EXCLUSIVE_INCLUSIVE);   
  //设置斜体   
  sp.setSpan(new StyleSpan(android.graphics.Typeface.BOLD_ITALIC), 27, 29, Spannable.SPAN_EXCLUSIVE_INCLUSIVE);   
  //SpannableString对象设置给TextView   
  myTextView.setText(sp);   
  //设置TextView可点击   
  myTextView.setMovementMethod(LinkMovementMethod.getInstance()); 

 

textview显示不同的颜色、样式来表示,需要用到SpannableString对象来处理

下面是从网上找的一段代码,已验证过:

mTextView = (TextView)findViewById(R.id.test);
SpannableString tSS = new SpannableString(“SpannableString学习中”);
tSS.setSpan(new BackgroundColorSpan(Color.RED), 0, 2, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);  //红色高亮
tSS.setSpan(new UnderlineSpan(), 15, 18,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);    //下划线
tSS.setSpan(new StyleSpan(android.graphics.Typeface.BOLD_ITALIC), 2, 5, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); //斜体
mTextView.setText(tSS);

关键方法:
public void setSpan (Object what, int start, int end, int flags)
主要是start跟end
start是起始位置,无论中英文,都算一个。从0开始计算起。end是结束位置,所以处理的文字,包含开始位置,但不包含结束位置。



下面解决点击不同文字跳转到不同activity的问题:

直接贴代码:

package com.feel;

import android.app.Activity;
import android.os.Bundle;
import android.text.SpannableString;
import android.text.Spanned;
import android.text.method.LinkMovementMethod;
import android.text.style.ClickableSpan;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;

public class TextViewJump2Activity extends Activity {
    /** Called when the activity is first created. */
 private TextView mClickableText;

 @Override
 public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  LinearLayout layout = new LinearLayout(this);
  mClickableText = new TextView(this);
  mClickableText.setClickable(true);
  mClickableText.setTextSize(20);
 
  layout.addView(mClickableText);
  setContentView(layout);
  mClickableText.setText(getClickableSpan());
  mClickableText.setMovementMethod(LinkMovementMethod.getInstance());
 }

 private SpannableString getClickableSpan() {
  View.OnClickListener l = new View.OnClickListener() {
   //如下定义自己的动作
   public void onClick(View v) {
    Toast.makeText(TextViewJump2Activity.this, "Click Success", Toast.LENGTH_SHORT).show();

    //在这里就可以做跳转到activity或者弹出对话框的操作了
   }
  };

  SpannableString spanableInfo = new SpannableString("This is a test, Click Here!");
  int start = 16;
  int end = spanableInfo.length();
  spanableInfo.setSpan(new Clickable(l), start, end,
  Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
  return spanableInfo;
 }
}

class Clickable extends ClickableSpan implements OnClickListener {
 private final View.OnClickListener mListener;

 public Clickable(View.OnClickListener l) {
 mListener = l;
 }

 @Override
 public void onClick(View v) {
  mListener.onClick(v);
 }
}

Android TextView 文字设置不同字体大小和颜色样式 在TextView中,由于开发需求,需要显示不同的字体形状和颜色,所以这就需要利用不同的样式来显示了 查找相关资料发现 有api可以提供 SpannableString 就可以对一段文字设置不同的显示颜色和字体样式 一.SpannableString的基本使用代码示例: //设置Url地址连接 private void addUrlSpan() { SpannableString spanString = new SpannableString("百度"); URLSpan spa 阅读详情

相关推荐

用野火FPGA开发板(EP4CE10)手把手教你实现一个高精度频率计(附完整Verilog代码)

本文详细介绍了基于野火FPGA开发板(EP4CE10)实现高精度频率计的全过程,涵盖等精度测量法的核心原理、Verilog代码实现及优化技巧。通过实际案例演示,帮助开发者掌握1Hz-50MHz范围、精度达0.1%的频率计设计方法,并提供完整的工程代码和实测数据。

weixin_29261711的博客 441

AndroidUI SpannableString基本使用

SpannableString`可以在字符序列基础上对指定的字符进行修饰,在日常开发过程中可以对TextView进行修饰,如一段完整文字中,对当中的词或句添加,粗体、点击事件、颜色、下划线等等。

bugyinyin的博客 1832

【NLP】使用 PyTorch 从头构建自己的大型语言模型 (LLM)

如果我们在 n 维空间中绘制一个向量,看起来相似的物体(如狗和猫)将彼此靠近,而看起来不相似的物体(如学校和家庭)的嵌入向量将位于更远的地方。为此,我们将使用一种流行的标记器,称为 BPE 标记器,这是一种子词标记器,正在 GPT3 等模型中使用。:前馈网络使用深度神经网络来学习两个线性层(第一层有 d_model 节点,第二层有 d_ff 节点,根据注意力论文分配值)中嵌入向量的所有特征,并且将 ReLU 激活函数应用于第一线性层的输出,为嵌入值提供非线性,并应用 dropout 以进一步避免过度拟合。

sikh_0529的博客 1952

Android 局部设置文字大小、颜色、点击事件等

局部设置文字大小 fun getTextSpannableStr(): SpannableStringBuilder { val spannableString = SpannableStringBuilder() val value = SysUtil.getString(R.string.feedback_re)//文字1 val valueEnd = SysUtil.getString(R.string.had_not_resolve)//

Blue 2049

Gerrit 使用操作手册

Gerrit是一种免费、开源的代码审查工具,使用网页交互页面。这个软件的名称来自于荷兰设计师师赫里特·里特费尔德(GerritRietveld),作者为Google公司的ShawnPearce。它使用Git作为底层版本控制系统,相比于其他的代码管理工具,Gerrit明显的特色是代码审核。利用网页浏览器,同一个团队的软件程序员,可以相互审核(Review)彼此修改后的程序代码,然后决定是继续提交还是取消提交。...

九离的博客 1万+

Window系统下搭建GIT本地服务器

这是一篇在window下搭建git本地服务器的教程,带你一步步搭建出本地的git服务器。

qwer971211的博客 2万+

spannableString使用

项目中有个需求,需要对一句话中的部分字体加粗。于是查到了spannableString可以实现这个需求。 主要是spannableString中的setSpan方法,四个can参数分别为: 1,文本所要使用的资源(可以是字体大小,颜色,样式,超链接,下划线等) 2,应用该资源的文本的起始位置 3,应用该资源的文本的结束位置(含前不含后,java的范围设置基本都是含前不含后) 4,只有四种...

wfskxj 855

微信抢红包神器自动抢软件

微信抢红包神器自动抢软件

weixin_44006731的博客 8081

Android之SpannableString记录

文章目录概述步骤特殊情况记录解决注意参数flag 概述 一般的,我们遇到文本要以不同的颜色展示的时候,都会考虑到使用SpannableString,单纯的String不能满足我们的需求 步骤 创建SpanableString或者SpannableStringBuilder String agreement = getResources().getString(R.string.registr...

snoto的专栏 272

【华为OD机试真题】18、喊7的次数重排 | 机试真题+思路参考+代码解析(C++、Java、Py)

题目描述 >喊7是一个传统的聚会游戏,N个人围成一圈,按顺时针从1到N编号。   编号为1的人从1开始喊数,下一个人喊的数字为上一个人的数字加1,但是当将要喊出来的数字是7的倍数或者数字本身含有7的话,不能把这个数字直接喊出来,而是要喊”过”。   假定玩这个游戏的N个人都没有失误地在正确的时机喊了”过”,当喊到数字K时,可以统计每个人喊”过”的次数。   现给定一个长度为N的数组,存储了打乱顺序的每个人喊”过”的次数,请把它还原成正确的顺序,即数组的第i个元素存储编号i的人喊

KJ.JK 4168

ArcGIS实验教程——实验二:ArcGIS地理配准完整操作步骤

本文介绍ArcGIS 10.2中地理配准的完整操作流程,涵盖加载扫描地图、启用地理配准工具条、添加控制点(含经纬度输入与坐标系统选择)、均匀分布控制点以提升精度,并最终通过“更新地理配准”完成栅格数据的空间定位。强调控制点数量、分布及坐标系匹配的重要性,附带实验数据下载链接与获取方式,适用于初学者掌握扫描矢量化前的关键几何校正技能。

智慧空间实验室 9万+

SpannableString 用法简单记录

SpannableString spannableString = new SpannableString("这句话中有百度超链接,有高亮显示,这样,或者这样,还有斜体。"); //设置超链接 spannableString.setSpan(new URLSpan("http://www.baidu.com"), 5, 7, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE

MoMo_KUA_1的专栏 2560

GEE:面对对象土地利用分类(结合SNIC、GLCM 和机器学习算法)

本文将介绍在Google Earth Engine中结合SNIC、GLCM和机器学习算法的的土地利用/土地覆盖(LULC)分类方法。结果如下图所示,

养乐多的博客 5619

SpannableString用法记录

SpannableString用法记录 转自 用SpannableString打造绚丽多彩的文本显示效果 setSpan参数说明 flags参数 参数值 说明 Spannable.SPAN_INCLUSIVE_EXCLUSIVE 从起始下标到终了下标,包括起始下标 Spannable.SPAN_INCLUSIVE_INCLUSIVE 从起始下标到终了...

pxq的博客 241

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

SpannableString 记录(转)

引用http://blog.youkuaiyun.com/rockcoding/article/details/7231756 TextView是用来显示文本的,有时需要给TextView中的个别字设置为超链接,或者设置个别字的颜色、字体等,那就需要用到Spannable对象,可以借助Spannable对象实现以上设置myTextView = (TextView) this.findViewById...

weixin_30622181的博客 73

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

安卓开发:记录一个用户协议和隐私政策的实现,富文本SpannableString以及富文本的点击事件

上面这个showPrivacyPolicyDialog方法就是创建一个弹窗,弹窗内容是一个自定义的布局,稍后我会把布局内容也贴上,以方便弟弟们伸手拿。openPrivacyPolicyLink方法就是点击以后的跳转方法,点击了哪个可以用参数内容区分。里面有一点就是布局用了style,如果你们的话,可以删掉这行,然后自己写必要属性和样式。

Spy003的博客 830

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

聊天@功能记录

集成腾讯云IM功能,有一个@的需求,其实在腾讯云9.18号更新的SDK已经升级了,但是我是之前写的,成功打了一个时间差,导致自己做一个鸡肋的功能。 这里记录一下,怎么使用使用的吧。 1、监听输入框 输入@字符,转跳选择好友界面 /** * 识别输入框的是不是@符号 */ private class MyInputFilter implements InputFilter { @Override public CharSequence fil

qq_30974087的博客 360

31.TextView分段改变字体颜色和分段点击

TextView分段改变字体颜色和分段点击

猴菇同学的博客 864

Android启动页用户相关政策弹框的实现

现在Android上架各大平台都要求App首页添加一个弹框,显示用户协议以及一些隐私政策,不然上架各大平台,现在就来简单的实现一下这个对话框 既然是一个对话框,那我们就先来简单的封装一个对话框,这样方便后续的一些修改: widget_user_dialog.xml <?xml version="1.0" encoding="utf-8"?> <androidx.appcompat.widget.LinearLayoutCompat xmlns:android="http://sch

你的外祖父的博客 4010

android textview.SettextSize不起作用的解决方法

android texview在代码中动态的设置textSize不起作用,而settextcolor却有效,调用刷新也不起效,这个时候可以用 SpannableString lightSp = new SpannableString(getString(R.string.light_device)); lightSp.setSpan(new AbsoluteSizeSpan(textSmallSize, false), 0, lightDeviceTxt.

坚持,努力 2558

Android 近期知识总结

前言:要学习的东西还很多啊。这是近期的一些 1 开发的辅助知识 Gradle知识 看看stormzhang的相关博客。 Linux系统搭建Android Studio,需要提前安装JDK 之类的(Windows的android studio不需要,但是eclipse等也需要)。 Android开发的版本库管理,git往往是不够用的,需要repo,关于repo的介绍,可参考:http...

FanJin的博客 485
上一篇: Java 十进制和十六制之间的转化(负数的处理)
下一篇: Android TextView跑马灯效果
gwpJava
博客等级 码龄14年 11粉丝 91原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值