第1部分:概述

平常在开发当中可能会遇到一些情况,需要一个文本框显示不同样式的字体。当然,你也可以选择用多个文本框来显示,只不过需要多设置几次。我在做项目的时候也遇到这样的需求,自己对TextView进行了一个扩展,基本可以实现功能。

第2部分:示例图片

图片示例:

第3部分:代码示例

1. 自定义View

import android.content.Context;
import android.text.SpannableString;
import android.text.Spanned;
import android.text.TextUtils;
import android.text.style.TextAppearanceSpan;
import android.util.AttributeSet;
import android.widget.TextView;public class MutiColorTextView extends TextView {public MutiColorTextView(Context context) {super(context);}public MutiColorTextView(Context context, AttributeSet attrs) {super(context, attrs);}public MutiColorTextView(Context context, AttributeSet attrs, int defStyleAttr) {super(context, attrs, defStyleAttr);}/*** 将一串字符中的一部分改变字体样式** @param context* @param originStr         本来的字符串* @param formatStr         需要改变的字符串* @param normalStyle       整体的字体样式* @param emphasizeStyle    需要改变部分的字体样式* @return*/public boolean setTextStyle(Context context, String originStr, String formatStr, int normalStyle, int emphasizeStyle) {if (!TextUtils.isEmpty(originStr) && !TextUtils.isEmpty(formatStr)) {try {int formatStart = originStr.indexOf(formatStr);int formatlength = formatStr.length();SpannableString formatString = new SpannableString(originStr);formatString.setSpan(new TextAppearanceSpan(context, normalStyle), 0, originStr.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);formatString.setSpan(new TextAppearanceSpan(context, emphasizeStyle), formatStart, formatStart + formatlength, Spanned.SPAN_INCLUSIVE_INCLUSIVE);setText(formatString);return true;} catch (Exception e) {e.printStackTrace();return false;}} else {return false;}}
}

2. style 代码

<style name="order_remark_normal"><item name="android:textColor">#999999</item>
</style><style name="order_remark_emphasize"><item name="android:textColor">#ea3640</item>
</style>

3. 调用

textView.setTextStyle(mContext, "你好吗,哈哈哈哈,我很好", "哈哈哈哈", R.style.order_remark_normal, R.style.order_remark_emphasize)

Android自定义View单TextView显示多种文字样式相关推荐

  1. Android自定义View(七)_Canvas之图片文字

    在上一篇文章Canvas之画布操作中我们了解了画布的一些基本操作方法,本次了解一些绘制图片文字相关的内容.如果你对前几篇文章讲述的内容熟练掌握的话,那么恭喜你,本篇结束之后,大部分的自定义View已经 ...

  2. android自定义textview销毁,Android自定义View去除TextView的Padding值

    在业务中需要对齐一个大字体和小字体 方案一:利用ImageView也可以实现这个对齐效果,但是如果同比例缩放的话,它们之间的间距会被拉开,不美观了. 方案二:可以利用TextViewWithoutPa ...

  3. android 自定义View ----- 类似黄油相机添加文字

    因为公司项目需求,要做一个类似于黄油相机那样添加文字的功能 可是网上到处找,资料特别少..就摸索着自己写吧... 图片这部分很简单...就是一个RelativeLayout里面先添加一个imageVi ...

  4. Android 自定义 View:左右两边显示 text 的 TextView(RightAndLeftTextView)

    工作中有这样一个需求: 打开时动态添加,不知道有多少行,那就开动脑经:在 xml 中写的话,又不确定有多少,那就在代码中 addView,但是呢,需求中又有很多处的 UI 布局也是这样的样式(左右 t ...

  5. android多行文字正中间显示,Android自定义View五(绘制文本大小、多行多列居中)...

    一.绘制文本 在Canvas中绘制文本,使用前面文章的坐标系 1.drawText的几种方法 public void drawText (String text, float x, float y, ...

  6. Android自定义view之网易云推荐歌单界面

    系列文章目录 Android自定义view之网易云推荐歌单界面 文章目录 系列文章目录 前言 一.实现 1.自定义一个圆角图片控件(也可直接使用第三方框架) 2.进行布局摆设 3.图片切换动画效果 二 ...

  7. android lrc 歌词view,自定义View强势来袭,用自定义View实现歌词显示控件下篇之自定义LyricView的实现...

    在上篇中,我与大家分享了关于如何进行*.lrc歌词文件的解析,以及将解析完成后的歌词展示在镶嵌在ScrollView中的TextView上,就这样而言,一个简单的歌词显示功能也就实现了. 但是,如何才 ...

  8. Android自定义View之Paint绘制文字和线

    Android自定义View系列 Android自定义View注意事项 Android自定义View之图像的色彩处理 Android自定义View之Canvas Android自定义View之轻松实现 ...

  9. Android自定义view,圆形的TextView,并通过xml设置属性,AttributeSet中取值

    Android自定义view设置xml属性 一个圆形的自定义TextView,通过xml来设置背景颜色的属性 values/attrs <declare-styleable name=" ...

  10. Android自定义view之ViewPager指示器——1

    Android自定义view之ViewPager指示器--1 在上两篇文章<Android自定义view之measure.layout.draw三大流程>以及<Android自定义v ...

最新文章

  1. 世界最大、最复杂的GPU!这颗集成1000亿个晶体管的芯片长什么样?
  2. 为什么说中国式报表特殊-3、报表格式
  3. 数据结构与算法问题 AVL二叉平衡树
  4. element 日历组件-自定义内容
  5. HTML+CSS+JS实现 ❤️canvas手机刮刮乐女朋友效果❤️
  6. 如何获取exception的target异常_三个好习惯,帮你写好Python里的异常处理
  7. linux删除文件夹命令6,Linux下创建、删除文件和文件夹命令
  8. 程序员开发软件的意义到底在哪?
  9. ZigBee--CC2530单片机--按键控制LED灯
  10. M-02-10.[紫猫]Sqlite3数据库插件
  11. Google Dinosour 小恐龙
  12. 计算机 无法自检,电脑开机不能自检是什么原因 电脑不能完成自检解决办法
  13. Simulink提速方式
  14. ybc_art打印艺术字
  15. TestFlight Beta 相关问答
  16. 【芯片前端】Filelist -f/-F的文件解析方式探究
  17. Vue——watch选项详解
  18. 董路太有才了--春晚零点报时出错技术分析
  19. 不是抽象类的基类不是好基类
  20. C++ std::mutex 用法详解

热门文章

  1. MIPS,程序的CPI,时钟周期计算(主频的计算)
  2. 阿里年薪百万的P7架构师简历都长什么样?他们都是怎么学习的?
  3. Fortran common
  4. Wekan 2.23 发布,支持中文的 JavaScript kanban
  5. 微信网页授权接口 对象存储
  6. Java越学越迷茫,应该怎么办?
  7. SSM实现秒杀系统案例
  8. 【人工智能】人工智能如何影响社会经济:关于近期文献的一个综述
  9. 系统越用越臃肿,你需要的系统瘦身技巧.
  10. Windows7 设置窗口颜色 护眼