首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

安卓:如何在一个TextView中组合文本和图标

在安卓中,可以使用SpannableString和ImageSpan来在一个TextView中组合文本和图标。

  1. 首先,创建一个SpannableString对象,用于设置TextView的文本内容和样式。
代码语言:txt
复制
SpannableString spannableString = new SpannableString("文本内容");
  1. 接下来,创建一个Drawable对象,用于设置图标。
代码语言:txt
复制
Drawable drawable = getResources().getDrawable(R.drawable.icon);
drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());
  1. 然后,创建一个ImageSpan对象,将Drawable对象设置为图标。
代码语言:txt
复制
ImageSpan imageSpan = new ImageSpan(drawable);
  1. 最后,使用setSpan方法将ImageSpan对象添加到SpannableString对象中,并设置图标的位置。
代码语言:txt
复制
spannableString.setSpan(imageSpan, startIndex, endIndex, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);

其中,startIndex和endIndex表示要设置图标的文本范围,Spannable.SPAN_INCLUSIVE_EXCLUSIVE表示图标在文本范围内,但不包括边界。

完整的代码示例:

代码语言:txt
复制
TextView textView = findViewById(R.id.textView);

SpannableString spannableString = new SpannableString("文本内容");

Drawable drawable = getResources().getDrawable(R.drawable.icon);
drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());

ImageSpan imageSpan = new ImageSpan(drawable);
spannableString.setSpan(imageSpan, startIndex, endIndex, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);

textView.setText(spannableString);

在上述代码中,你需要将R.drawable.icon替换为你自己的图标资源。另外,startIndex和endIndex需要根据你要设置图标的文本范围进行调整。

这种方式可以用于在TextView中实现富文本效果,例如在文本中插入表情图标、特殊符号等。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Android训练课程(Android Training) - 构建你的第一个应用

构建你的第一个应用(app) 欢迎来到开发! 这个课程教你如何构建你的第一个应用。你讲会学到如何去创建一个工程启动一个可以调试的应用的版本。...是你的程序包的命名空间(Java编程语言的包的概念是相同的规则)。你的包名必须是在你的系统的所有的包是唯一的。...5.在接下来的屏幕可以帮助你创建一个启动图标。 你可以使用多种方式自定义一个图标使用工具创建一个适合多种屏幕密度的图标。...这节课将将向你展示如何在真实设备模拟器安装启动你的应用,有两种方式:使用Eclipse或者命令提示符工具。...说明了 在布局,ViewGroup对象形式如何分支,包含其他的视图对象。 在这节课,你将创建一个XML布局,它包含了一个文本一个按钮。

2.1K00

一步步从基础到精通自学教程,纯实战,纯干货(五)

目录: 第一个程序 常用android控件 简单计算器 第一个程序 在前面课程 我们已经创建过第一个android软件。...我们看到里面的TextView就是文本显示的控件,我们可以更改adnroid:text属性的值,更改我们在软件界面显示的文字。我们改为“做全栈攻城狮” 此时运行就显示做全栈攻城狮了。 ?...这就是我们第一个程序 是不是稍有成就感了。...常用控件 常用的控件 TextView:表示文本显示 EditText:文本编辑框 Button:按钮 RadioButton:单选框 CheckBox:复选框 ? ?...更改文字大小:android:textSize(字体的值用单位sp)例如 更多控件知识后期在写代码过程慢慢介绍。 ? 3.简单计算器程序 我们实现一个简单的计算器程序界面。 ?

87420

第五夜 维纳斯的诞生

之前各讲,分别讲解了的开发环境、架构基本概念。从这一讲开始,我将制作一个简单的应用,并通过逐步升级它的功能,连带出开发的多个情境。 《维纳斯的诞生》是文艺复兴早期名画。...页面布局:LinearLayout 按钮点击监:OnClickListener 临时显示简单的文字信息:Toast用于显示简单的文字信息 编写视图 按照第一夜 第一个应用的介绍,创建一个Android...我将要创建一个页面。这个页面的视图定义在res/layout/activity_main.xml。从第四夜 概念漫游(下),我们已经知道,这个XML文件描述了一个视图树。...线性布局包含一个TextView,以及一个Button按钮。TextView用于显示文本"Welcome"。...用户点击按钮后,将执行监听对象的onClick()方法。该方法利用Toast,显示一段文本,即R.string.author对应的字符串资源。

1.4K70

第五夜 维纳斯的诞生

之前各讲,分别讲解了的开发环境、架构基本概念。从这一讲开始,我将制作一个简单的应用,并通过逐步升级它的功能,连带出开发的多个情境。 《维纳斯的诞生》是文艺复兴早期名画。...页面布局:LinearLayout 按钮点击监:OnClickListener 临时显示简单的文字信息:Toast用于显示简单的文字信息 编写视图 按照第一夜 第一个应用的介绍,创建一个Android...我将要创建一个页面。这个页面的视图定义在res/layout/activity_main.xml。从第四夜 概念漫游(下),我们已经知道,这个XML文件描述了一个视图树。...线性布局包含一个TextView,以及一个Button按钮。TextView用于显示文本"Welcome"。...用户点击按钮后,将执行监听对象的onClick()方法。该方法利用Toast,显示一段文本,即R.string.author对应的字符串资源。

1.1K30

Android 8.0 “奥利奥”正式发布

Android 8.0正式发布 Google 如约在今日正式发布了Android O正式版,中文名8.0,代号奥利奥(Oreo); 随我来看看有哪些有意思的新东西: 系统自动填充框架 不管是在手机上注册账号...因而在 Android 8.0 ,Google 首次整合了一个系统级的全局自动填写功能。开启后,当我们在第一次进行应用设置、登录时,系统就会帮我们快速填写好对应的个人信息密码。 ?...这也导致不同 Android 设备的体验迥异,百花齐放的表象之下,无论是应用开发者图标设计师们往往感到很迷茫。 为了解决这个问题,Google 在 Android 8.0 引入了自适应图标规范。...APP图标角 ? APP图标角标:8.0原生支持了应用角标功能,不过并非数字,而是随着图标颜色自适应的纯色圆形图案。...自适应 TextView、统一布局边距:Android 8.0 允许开发者根据 TextView 的大小自动设置文本展开或收缩的大小,对开发者而言,在不同屏幕上优化文本大小或者优化包含动态内容的文本大小要比以往简单多了

1.4K40

搭建安开发环境(Android Studio)

安装SDK 第一次启动android studio的时候会有一个引导,主要是要安装Android SDK,建议可以现选一个,其它等进入之后再点击android sdk manager的图标进行修改,...安装AVD 启动之前还要配置一个模拟器,简称AVD(android virtual device),单击刚才SDK manager旁边的那个图标,那个就是AVD Manager。...了解程序 还记得之前我们在AndroidManifest.xml中注册的主Activity吗?...至此,我们已经搭建完的开发环境,并且基本了解了一个程序的结构。 重要的东西:Log Log,Log,Log重要的东西说三遍,现在来看看如何在程序添加Log。...总结 Android程序不推荐在程序对字符串进行硬编码,而是把字符串定义在一个XML文件。 在XML可以通过@string/hello_world获得这个字符串的引用。

2K70

【翻译】TextClassification介绍(三)

Allison 阅读时间: 5 分钟 原文链接:https://blog.stylingandroid.com/textclassification-part-3/ 二、正文 在 API 26 (奥利奥)引入了一个新的文字功能系统...在我们的示例代码,我们使用了一个 Styling Android 标志图形作为图标,使用了 “Styling Android” 作为标题,以及简单的一些内容描述,再加一个能登录浏览器打开 URL 链接...TextClassifier 已经完成了,剩下的事情就是将它连接到我们的 TextView 文本控件: class MainActivity : AppCompatActivity() {...我们目前得到的文本处理行为是:如果用户长时间按下的文字是无法识别的类型,那就只有简单的复制,粘贴选择所有的选项功能;如果他们长时间按下系统默认的文本分类器所支持的任何类型,那么他们会得到我们在第一篇文章中所看到的所有相同的行为动作...在 TextClassifier 文本分类器还有一个机制,用来识别具体的文本类型,然后使用文本生成链接,不过在本系列文章我们不会去研究它,因为我们这里所看到的技术已经涵盖了 TextView WebView

67330

Android开发 - 样式主题

比如所有在表格 TextView XML attributes 列出的属性,都可以应用在一个样式的定义作用在TextView元素上(或者它的子类)。...在视图元素应用样式 下面演示如何在XML布局设置一个样式: <TextView style="@style/CodeFont" android:text="@string/hello...较新的版本为应用提供了额外的可用的样式,同时你可能想要使用它们在那些平台上运行,并且仍然老版本保持兼容。...使用平台样式主题 平台提供了很多样式主题,供你在应用程序中使用。在 R.style 类里你可以找到可以用的引用。...比如,在的主题源代码,你将找到一个声明 .在这些定义里,你将会看到所有的常常用到的 ”被用于框架的样式对话框的属性“ 更多关于 样式主题

1.8K10

Python Appium 自动化测试 基本使用 - Phone Spider

Python Appium 自动化测试 基本使用 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 例如:第一章 Python 机器学习入门之pandas的使用 ---- 前言...textContains(“python”),根据文本包含什么字符串定位 textmartch(),可以使用正则表达式定位 className(“android.widget.TextView”),根据组件名称定位...里面的*[n]; instance(0),在定位的元素结果根据下标进行取值,下标从0开始计算; childSelector(new UiSelector().className(“android.widget.TextView...'platformVersion': '10', # 手机版本 'deviceName': 'xxx', # 设备名,手机可以随意填写 'appPackage': 'tv.danmaku.bili...'platformVersion': '10', # 手机版本 'deviceName': 'xxx', # 设备名,手机可以随意填写 'appPackage': 'tv.danmaku.bili

42010

天气预报app(一)——解析Json数据、数据类封装

简易的天气app(一)——解析Json数据、数据类封装 ✅简易的天气app(二)——适配器、每小时数据展示 ✅简易的天气app(三)——城市管理、数据库操作 ✅简易的天气app(四)—...项目只包含一个主要activity_main.xml,两个封装的实体用来存数据 用到的天气api可前往官网注册账号获取:天气api 例如我这里注册好了我的账号,进入主页面得到下图的appidappsecret...然后把这两个东西复制粘贴到下面的api //里面的括号的两个参数值换成你的,包括括号 https://tianqiapi.com/api?...的属性名选择性封装DayWeatherBean import java.util.Arrays; /** * TextView tv_city,tv_time,tv_weather,tv_week...ivWeather.setImageResource(WeatherImgUtil.getImgResOfWeather(dayWeather.getWea_img())); //此工具图片源码给出

1.8K40

XPath定位如何在App自动化测试中大显神威

还有自己的原生定位方式等方法,但是关于ID定位,name定位,xpath定位等,appium也是支持的,本篇文章就来给大家介绍一下xpath定位是如何在appium中大显神威的。...本文将以淘宝App为例,定位左上角的扫一扫按钮,介绍xpath定位方法在appium元素定位的使用。...基础定位如果元素text是唯一的,可以通过text文本定位//*[@text=’text文本属性’]代码如下:# 定位textdriver.find_element_by_xpath("//*[@text...driver.back()#定位iddriver.find_element_by_xpath("//*[contains(@resource-id, 'id/home_searchedit')]").click()组合定位如果一个元素有...2个或更多属性,通过xpath也可以同时匹配2个属性,text, resource-id,class ,index,content-desc这些属性都能任意组合定位。

9810

第十夜 亚当的诞生

上一讲介绍了用WebView来抓取一个网页内容。这一讲我将介绍如何在内部直接进行HTTP通信。 《亚当的诞生》,西斯廷礼拜堂的吊顶画,米开朗基罗之作。...描述 这一讲,我将使用JSON,将数据库备份到远程的数据库。反过来我也将从远程数据库抓取条目,并放入的数据库。...相关的知识点包括: 线程 HTTP通信 JSON 增加ActionBar 我首先在首页上增加一菜单,用于触发下载上传功能。这是通过ActionBar实现的。...ActionBar在页面的顶端增加一个横幅。这个横幅上可以有应用的图标、文字信息选项菜单(OptionMenu)。 ?...为了确保界面的流畅,规定网络访问不能在负责图画界面的主线程中进行。所以,我们必须把网络访问放在一个新的线程。我们通过异步的方式进行网络访问,将在下一部分介绍。

1.1K90

Android入门教程 | TextView简介(宽高、文字、间距)

TextView简介 文字,是我们传达信息的一种常见方式。在应用上显示文字,我们通常使用TextView。...之前我们已经知道如何获取到layoutTextView,也知道setText()方法可以修改显示的文字。 结合我们实际的生活学习经验,写字的时候,有哪些方面是可以由我们来控制的?...dp是的一种单位,通常用来规定控件的宽高,间隔距离等等。类似的,表示文字大小的单位,卓里用sp。 显示文字 显示文字,可能是 TextView 最主要的用法了。...第一个是字体,这里可以忽略。 第二个是效果,有正常,加粗,斜体,加粗斜体这几种可选。...字体(字库) 默认情况下,TextView 的 typeface 属性支持 sans、serifmonospace 这三种字体。 系统默认 sans 作为文本显示的字体。但这三种字体只支持英文。

1.3K00

Android项目实战(三十二):圆角对话框Dialog

前言:   项目中多处用到对话框,用系统对话框太难看,就自己写一个自定义对话框。   ...对话框包括:1、圆角         2、app图标 , 提示文本,关闭对话框的"确定"按钮   难点:1、对话框边框圆角显示      2、考虑到提示文本字数不确定,在不影响美观的情况下,需要在一行内显示提示的文字信息...       3、设置对话框的宽和高   技术储备:      1、开发_使用AlertDialog实现对话框    知道AlertDialog有setView(view) ,Dialog 有ContentView...2、Android项目实战(五):TextView自适应大小   一行内显示文本信息,当文本字数少的时候 ,文字大小大,当文本字数多的时候,文字大小小。   ...因为项目中必定多出用到对话框,所以我写一个静态方法,传上下文参数 提示文本的内容即可 : public static void showEditDialog(Context context , String

2.2K70

Android入门教程 | TextView简介(宽高、文字、间距)

TextView简介 文字,是我们传达信息的一种常见方式。在应用上显示文字,我们通常使用TextView。...之前我们已经知道如何获取到layoutTextView,也知道setText()方法可以修改显示的文字。 结合我们实际的生活学习经验,写字的时候,有哪些方面是可以由我们来控制的?...dp是的一种单位,通常用来规定控件的宽高,间隔距离等等。类似的,表示文字大小的单位,卓里用sp。 显示文字 显示文字,可能是 TextView 最主要的用法了。...第一个是字体,这里可以忽略。 第二个是效果,有正常,加粗,斜体,加粗斜体这几种可选。...字体(字库) 默认情况下,TextView 的 typeface 属性支持 sans、serifmonospace 这三种字体。 系统默认 sans 作为文本显示的字体。但这三种字体只支持英文。

1.7K20

天气预报app(四)——搜索城市、完善页面

✅简易的天气app(一)——解析Json数据、数据类封装 ✅简易的天气app(二)——适配器、每小时数据展示 ✅简易的天气app(三)——城市管理、数据库操作 简易的天气app(四)—...第二层就是一个搜索框,使用到的是AutoCompleteTextView,带有提示信息的输入框,EditView也可以,右边搜索图标设置点击监听事件。...: android:completionThreshold="1" //输入一个字符就给出提示 android:dropDownHorizontalOffset://提示菜单与文本起始的水平间距 android...,前面文章也提到了观察法,先是一个括号”[“括住了全部省份,每个省份都是一个Object对象(大括号”{“阔了起来)。...后续会更新,适配器也是提供的ArrayAdapter,传入的是全国所有市的String[]数组。

1.7K50

第八夜 玛丽莲梦露

当好友数目增加或减少时,需要动态的增加或减少显示好友条目。我将介绍ListViewListAdapter,两者结合,可以动态的显示条目。我将利用它们,创建一个条目页面,显示所有的联系人类别。...OnClickListener接口有一个规定的方法onClick()。事件发生后,将调用的该方法。...由于数据是字符串类型的表,ArrayAdapter也有一个String的类型参数。一个ArrayAdapter包含了数据条目的具体格式。...需要注意的是第二个参数android.R.layout.simple_list_item_1,它是框架自己提供的一个简单的XML布局,包含了一个TextView元素。...此时,我们需要if结构那样,重建新的条目视图。 我将要赋予给条目的视图布局保存在list_category.xml。它在位于一行包含了两个TextView: <?

60110

第八夜 玛丽莲梦露

当好友数目增加或减少时,需要动态的增加或减少显示好友条目。我将介绍ListViewListAdapter,两者结合,可以动态的显示条目。我将利用它们,创建一个条目页面,显示所有的联系人类别。...OnClickListener接口有一个规定的方法onClick()。事件发生后,将调用的该方法。...由于数据是字符串类型的表,ArrayAdapter也有一个String的类型参数。一个ArrayAdapter包含了数据条目的具体格式。...需要注意的是第二个参数android.R.layout.simple_list_item_1,它是框架自己提供的一个简单的XML布局,包含了一个TextView元素。...此时,我们需要if结构那样,重建新的条目视图。 我将要赋予给条目的视图布局保存在list_category.xml。它在位于一行包含了两个TextView: <?

1.9K90
领券