1.设置TextView字体颜色

1)使用Html标签方式设置

代码如下:

tvTest1.setText(Html.fromHtml("电影<font color = blue>《斗牛》</font>,黄渤和奶牛的爱情故事。"));

效果图如下:

使用Html标签设置TextView文本样式

2)使用SpannableString设置文本样式

新建一个SpannableString对象,构造函数传入string字符串。

接下来设置span,span的类型有ForegroundColorSpan,BackgroundColorSpan,RelativeSizeSpan,StrikethroughSpan,UnderlineSpan,SuperscriptSpan,SubscriptSpan,StyleSpan,ImageSpan,ClickableSpan,URLSpan。

  • ForegroundColorSpan():字体颜色。
  • BackgroundColorSpan():字体背景颜色。
  • RelativeSizeSpan():相对字体大小。
  • StrikethroughSpan():删除线。
  • UnderlineSpan():下划线。
  • SuperscriptSpan():上标。
  • SubscriptSpan():下标。
  • StyleSpan():字体风格:加粗,斜体。
  • ImageSpan():添加图片。
  • ClickableSpan():字体可点击。
  • URLSpan():URL。

创建好Span后,调用SpannableString对象的setSpan()方法设置Span。setSpan(Object what, int start, int end, int flags)四个参数含义分别是Span类型,设置该Span的起始下标,设置该Span的结束下标,设置该Span的下标计算方式。Span下标计算方式如下:

  • Spanned.SPAN_INCLUSIVE_EXCLUSIVE:起始下标到终止下标,包括起始下标,不包括终止下标。
  • Spanned.SPAN_INCLUSIVE_INCLUSIVE:起始下标到终止下标,包括起始下标和终止下标。
  • Spanned.SPAN_EXCLUSIVE_INCLUSIVE:起始下标到终止下标,不包括起始下标,包括终止下标。
  • Spanned.SPAN_EXCLUSIVE_EXCLUSIVE:起始下标到终止下标,不包括起始下标和终止下标。

代码如下:

        String str = "电影《斗牛》,黄渤和奶牛的爱情故事。";//字体颜色SpannableString spForegroundColor = new SpannableString(str);ForegroundColorSpan foregroundColorSpan = new ForegroundColorSpan(Color.RED);spForegroundColor.setSpan(foregroundColorSpan, 2, 6, Spanned.SPAN_INCLUSIVE_INCLUSIVE);tvSpannableStringForegroundColor.setText(spForegroundColor);//背景颜色SpannableString spBackgroundColor = new SpannableString(str);BackgroundColorSpan backgroundColorSpan = new BackgroundColorSpan(Color.RED);spBackgroundColor.setSpan(backgroundColorSpan, 2, 6, Spanned.SPAN_INCLUSIVE_INCLUSIVE);tvSpannableStringBackgroundColor.setText(spBackgroundColor);//相对字体大小SpannableString spRelativeSize = new SpannableString(str);RelativeSizeSpan relativeSizeSpan = new RelativeSizeSpan(1.5f);spRelativeSize.setSpan(relativeSizeSpan, 2, 6, Spanned.SPAN_INCLUSIVE_INCLUSIVE);tvSpannableStringRelativeSize.setText(spRelativeSize);//删除线SpannableString spStrikethrough = new SpannableString(str);StrikethroughSpan strikethroughSpan = new StrikethroughSpan();spStrikethrough.setSpan(strikethroughSpan, 2, 6, Spanned.SPAN_INCLUSIVE_INCLUSIVE);tvSpannableStringStrikethrough.setText(spStrikethrough);//下划线SpannableString spUnderline = new SpannableString(str);UnderlineSpan underlineSpan = new UnderlineSpan();spUnderline.setSpan(underlineSpan, 2, 6, Spanned.SPAN_INCLUSIVE_INCLUSIVE);tvSpannableStringUnderline.setText(spUnderline);//上标SpannableString spSuperscript = new SpannableString(str);SuperscriptSpan superscriptSpan = new SuperscriptSpan();spSuperscript.setSpan(superscriptSpan, 2, 6, Spanned.SPAN_INCLUSIVE_INCLUSIVE);tvSpannableStringSuperscript.setText(spSuperscript);//下标SpannableString spSubscript = new SpannableString(str);SubscriptSpan subscriptSpan = new SubscriptSpan();spSubscript.setSpan(subscriptSpan, 2, 6, Spanned.SPAN_INCLUSIVE_INCLUSIVE);tvSpannableStringSubscript.setText(spSubscript);//字体风格:加粗SpannableString spStyle = new SpannableString(str);StyleSpan styleSpan = new StyleSpan(Typeface.BOLD);spStyle.setSpan(styleSpan, 2, 6, Spanned.SPAN_INCLUSIVE_INCLUSIVE);tvSpannableStringStyle.setText(spStyle);//图片SpannableString spImage = new SpannableString("电影《斗牛》表情,黄渤和奶牛的爱情故事。");Drawable drawable = getResources().getDrawable(R.mipmap.kb);drawable.setBounds(0, 0, 42, 42);ImageSpan imageSpan = new ImageSpan(drawable);spImage.setSpan(imageSpan, 6, 8, Spanned.SPAN_INCLUSIVE_INCLUSIVE);tvSpannableStringImage.setText(spImage);//可点击SpannableString spClickable = new SpannableString(str);ClickableSpan clickableSpan = new ClickableSpan() {@Overridepublic void onClick(View widget) {ToastUtil.showToast("这是一个ClickableSpan");}};spClickable.setSpan(clickableSpan, 2, 6, Spanned.SPAN_INCLUSIVE_INCLUSIVE);//调用TextView的setMovementMethod()方法让超链接起作用。//或者给该TextView添加属性android:autoLink,设置当文本为URL链接/email/电话/号码/map时,// 文本是否显示为可点击的连接,值有:none/web/email/phone/map/alltvSpannableStringClickable.setMovementMethod(LinkMovementMethod.getInstance());tvSpannableStringClickable.setText(spClickable);//URLSpannableString spUrl = new SpannableString(str);URLSpan urlSpan = new URLSpan("https://blog.csdn.net/zhaohuiyang_949");spUrl.setSpan(urlSpan, 2, 6, Spanned.SPAN_INCLUSIVE_INCLUSIVE);//调用TextView的setMovementMethod()方法让超链接起作用。tvSpannableStringUrl.setMovementMethod(LinkMovementMethod.getInstance());tvSpannableStringUrl.setText(spUrl);

效果图如下:

SpannableString设置各种字体样式

2.跑马灯效果

文本设置跑马灯效果,只需要在xml <TextView/>标签中添加属性即可,不需要写java代码。相关属性介绍如下:

  • android:ellipsize 当文本过长时,文本显示方式,start在文本开头显示省略号,end在文本末尾显示省略号,middle在文本中间显示省略号,marquee以跑马灯形式显示(横向滚动)。
  • android:marqueeRepeatLimit 在设置了android:ellipsize="marquee"属性后,设置滚动重复次数,marquee_forever表示无限次。
  • android:focuseableTouchMode 是否在触摸模式下获取焦点。
  • android:focuseable 控件是否能获取焦点。
  • android:singleLine 是否以单行显示文本。
  • 注:focuseableTouchMode和focusable属性是必须要的,无法获取焦点的情况下跑马灯效果无效。

代码如下:

<TextViewandroid:id="@+id/tv"android:layout_width="match_parent"android:layout_height="wrap_content"android:ellipsize="marquee"android:focusable="true"android:focusableInTouchMode="true"android:marqueeRepeatLimit="marquee_forever"android:singleLine="true"android:text="电影《斗牛》,黄渤和奶牛的爱情故事。电影《斗牛》,黄渤和奶牛的爱情故事。电影《斗牛》,黄渤和奶牛的爱情故事。" />

效果如图:

跑马灯

3.霓虹灯效果

实现思路:利用线程Handler和定时器Timer,Timer每隔一段时间发送消息,Handler接收消息后,改变TextView的背景颜色.。直接放代码,关键点代码中都有注释。

代码如下:

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context="f3.nsu.com.neon.MainActivity"><TextViewandroid:id="@+id/text01"android:layout_width="240dp"android:layout_height="240dp"android:layout_gravity="center"/><TextViewandroid:id="@+id/text02"android:layout_width="200dp"android:layout_height="200dp"android:layout_gravity="center"/><TextViewandroid:id="@+id/text03"android:layout_width="160dp"android:layout_height="160dp"android:layout_gravity="center"/><TextViewandroid:id="@+id/text04"android:layout_width="120dp"android:layout_height="120dp"android:layout_gravity="center"/><TextViewandroid:id="@+id/text05"android:layout_width="80dp"android:layout_height="80dp"android:layout_gravity="center"/><ImageViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:src="@mipmap/ic_launcher"android:layout_gravity="center"android:contentDescription="@string/app_name"/></FrameLayout>

MainActivity.java

package f3.nsu.com.neon;import android.graphics.Color;
import android.os.Handler;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TextView;import java.util.Timer;
import java.util.TimerTask;/*** TextView霓虹灯*/
public class MainActivity extends AppCompatActivity {//存TextView的IDprivate int[] textIds = new int[]{R.id.text01,R.id.text02,R.id.text03,R.id.text04,R.id.text05};//存颜色private int[] colors = new int[]{Color.BLACK,Color.BLUE,Color.CYAN,Color.DKGRAY,Color.GRAY};//绑定控件的用的TextView数组private TextView[] views = new TextView[textIds.length];private Handler mHandler;private int currentColor = 0;   //从哪个颜色开始@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//循环遍历ID数组绑定控件for (int i = 0;i<textIds.length;i++){views[i] = (TextView) findViewById(textIds[i]);}//创建Handler对象,用于接收消息并处理mHandler = new Handler(){@Overridepublic void handleMessage(Message msg) {//判断消息是否为指定消息if (msg.what == 0x11){//循环设置TextView的背景颜色for (int i = 0;i<views.length;i++){views[i].setBackgroundColor(colors[(i+currentColor)%colors.length]);}currentColor = (currentColor+1)%colors.length;}}};Timer timer = new Timer();      //创建定时器对象timer.schedule(new TimerTask() {@Overridepublic void run() {mHandler.sendEmptyMessage(0x11);}},0,1000);      //每隔1000ms发送一次消息}
}

效果如图:

TextView霓虹灯效果

有问题欢迎私聊或者发送邮箱(964427082@qq.com)一起讨论

Android TextView设置多样式文本,跑马灯以及霓虹灯效果相关推荐

  1. android 图片跑马灯动画,【Android自定义View】- 文本跑马灯效果

    简介 有些时候,文字过长,或者有多条需要展示的文本时,我们需要将文本进行左右滚动,多条文本时,还得上下滚动以实现展示不同的文本内容.这时候就需要我们自定义view来实现文本跑马灯效果了. 效果图 jj ...

  2. Android移动开发之【通往安卓的神奇之旅】TextView和ImageView 实现跑马灯效果

    文章目录 1 textview 1.1 介绍属性(全) 1.2 自带跑马灯代码 2 imageview 1 textview 1.1 介绍属性(全) android:autoLink设置是否当文本为U ...

  3. Android中设置显示文本,Android文本显示控件-TextView属性详解

    android:autoLink //设置是否当文本为URL链接/email/电话号码/map时,文本显示为可点击的链接.可选值(none/web /email/phone/map/all) andr ...

  4. Android 中一个简单垂直跑马灯的实现

    记录一个Android中简单实现垂直跑马灯功能的方法:实现了垂直跑马灯的功能.记录一下以便日后查看: 首先在MainActivity下新建一个名为ScrollTextView的.java 文件 Scr ...

  5. android+设置字体行高,android textview设置字体的行距和字间距

    android textview设置字体的行距和字间距 字间距 textView有一个属性android:textScaleX是调节字间距的,它的值是一个float型.查看源代码,默认textView ...

  6. android textview 字体颜色设置,Android textview 设置不同的字体大小和颜色

    在实际应用中,需要将一个字符串已不同的颜色,字体显示出来.当然完全可以通过不同textview拼接出来.也可以通过一个textview来展示. 步骤如下: 1.定义不同style . 不妨如下定义2个 ...

  7. android TextView设置字体颜色

    今天,简单讲讲如何设置TextView的字体颜色. 其实很简单,不过之前忘记了,所以还是记录,总结一下. TextView的字体设置方法: 1.直接通过配置文件设置 2.在Activity类中进行设置 ...

  8. sxssfworkbook 设置宽度_手机设置炫酷跑马灯!消息一来就显示闪光!朋友都说怎么弄?...

    手机设置炫酷跑马灯!消息一来就显示闪光!朋友都说怎么弄? 今天给大家分享一个好物,让你的来电显示和微信消息闪屏,特别的炫酷,大家接下来看看 吧!一键让你拥有像三星S10一样的息屏提醒和跑马灯的方法! ...

  9. TextView属性大全及跑马灯效果

    TextView控件常见属性: android:autoLink :设置是否当文本为URL链接/email/电话号码/map时,文本显示为可点击的链接.可选值(none/web /email/phon ...

最新文章

  1. 开放一些3D视觉相关职位!
  2. 将磁盘上的一个文本文件的内容复制到另一个文件中
  3. Scala --- 第三章 数组相关操作
  4. [15]APUE:pipe / FIFO
  5. [转]matlab GUI 新手入门——最基本的几个概念
  6. ASP.NET MVC:4 Ways To Prevent Duplicate Form Submission(转载)
  7. 多级cache之间的替换(缓存)策略
  8. 23种设计模式C++源码与UML实现--状态模式
  9. 解决XML中报“cvc-complex-type.2.4.a: Invalid content was found starting with element ”错误
  10. C++shortest common supersequence最短公共超序列算法的实现(附完整源码)
  11. Angular self study 5 - remove ng-app
  12. 请不要做浮躁的嵌入式系统工程师(谨以此文与大家共勉)
  13. html5 web storage攻击,HTML5安全风险详析之二:Web Storage攻击
  14. Linux操纵零碎下设置JSP开发环境的方式
  15. django之多表查询-2
  16. Android系统签名文件
  17. 基于cesium的三维城市建筑可视化系统(shp数据导入cesium的三种可行方法)
  18. 主打产品“火力不足”致使发行人持续盈利能力下降,这公司创业板IPO被终止
  19. Spark RDD的Transformation操作
  20. FTTH网速慢解决方案

热门文章

  1. 【muduo源码分析】Buffer类的设计
  2. 根据第xx天推算日期
  3. 最小二乘法详解(线性拟合与非线性拟合)
  4. 理解委托是类型安全的
  5. Siki_Unity_2-9_C#高级教程(未完)
  6. PHP 中跳转网页的三种方法
  7. 复制一个空洞文件且忽略掉其空洞内容
  8. 2008生产实习 日程安排
  9. HDU2073 无限的路【数学】
  10. Bailian2675 计算书费【求和】