Android自定义View单TextView显示多种文字样式
第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显示多种文字样式相关推荐
- Android自定义View(七)_Canvas之图片文字
在上一篇文章Canvas之画布操作中我们了解了画布的一些基本操作方法,本次了解一些绘制图片文字相关的内容.如果你对前几篇文章讲述的内容熟练掌握的话,那么恭喜你,本篇结束之后,大部分的自定义View已经 ...
- android自定义textview销毁,Android自定义View去除TextView的Padding值
在业务中需要对齐一个大字体和小字体 方案一:利用ImageView也可以实现这个对齐效果,但是如果同比例缩放的话,它们之间的间距会被拉开,不美观了. 方案二:可以利用TextViewWithoutPa ...
- android 自定义View ----- 类似黄油相机添加文字
因为公司项目需求,要做一个类似于黄油相机那样添加文字的功能 可是网上到处找,资料特别少..就摸索着自己写吧... 图片这部分很简单...就是一个RelativeLayout里面先添加一个imageVi ...
- Android 自定义 View:左右两边显示 text 的 TextView(RightAndLeftTextView)
工作中有这样一个需求: 打开时动态添加,不知道有多少行,那就开动脑经:在 xml 中写的话,又不确定有多少,那就在代码中 addView,但是呢,需求中又有很多处的 UI 布局也是这样的样式(左右 t ...
- android多行文字正中间显示,Android自定义View五(绘制文本大小、多行多列居中)...
一.绘制文本 在Canvas中绘制文本,使用前面文章的坐标系 1.drawText的几种方法 public void drawText (String text, float x, float y, ...
- Android自定义view之网易云推荐歌单界面
系列文章目录 Android自定义view之网易云推荐歌单界面 文章目录 系列文章目录 前言 一.实现 1.自定义一个圆角图片控件(也可直接使用第三方框架) 2.进行布局摆设 3.图片切换动画效果 二 ...
- android lrc 歌词view,自定义View强势来袭,用自定义View实现歌词显示控件下篇之自定义LyricView的实现...
在上篇中,我与大家分享了关于如何进行*.lrc歌词文件的解析,以及将解析完成后的歌词展示在镶嵌在ScrollView中的TextView上,就这样而言,一个简单的歌词显示功能也就实现了. 但是,如何才 ...
- Android自定义View之Paint绘制文字和线
Android自定义View系列 Android自定义View注意事项 Android自定义View之图像的色彩处理 Android自定义View之Canvas Android自定义View之轻松实现 ...
- Android自定义view,圆形的TextView,并通过xml设置属性,AttributeSet中取值
Android自定义view设置xml属性 一个圆形的自定义TextView,通过xml来设置背景颜色的属性 values/attrs <declare-styleable name=" ...
- Android自定义view之ViewPager指示器——1
Android自定义view之ViewPager指示器--1 在上两篇文章<Android自定义view之measure.layout.draw三大流程>以及<Android自定义v ...
最新文章
- 世界最大、最复杂的GPU!这颗集成1000亿个晶体管的芯片长什么样?
- 为什么说中国式报表特殊-3、报表格式
- 数据结构与算法问题 AVL二叉平衡树
- element 日历组件-自定义内容
- HTML+CSS+JS实现 ❤️canvas手机刮刮乐女朋友效果❤️
- 如何获取exception的target异常_三个好习惯,帮你写好Python里的异常处理
- linux删除文件夹命令6,Linux下创建、删除文件和文件夹命令
- 程序员开发软件的意义到底在哪?
- ZigBee--CC2530单片机--按键控制LED灯
- M-02-10.[紫猫]Sqlite3数据库插件
- Google Dinosour 小恐龙
- 计算机 无法自检,电脑开机不能自检是什么原因 电脑不能完成自检解决办法
- Simulink提速方式
- ybc_art打印艺术字
- TestFlight Beta 相关问答
- 【芯片前端】Filelist -f/-F的文件解析方式探究
- Vue——watch选项详解
- 董路太有才了--春晚零点报时出错技术分析
- 不是抽象类的基类不是好基类
- C++ std::mutex 用法详解