Android项目实战(十四):TextView显示html样式的文字

项目需求:

TextView显示一段文字,格式为:白雪公主(姓名,字数不确定)向您发来了2(消息个数,不确定)条消息

这段文字中名字和数字的长度是不确定的,还要求名字和数字各自有各自的颜色。

一开始我想的是用(转) SpannableString与SpannableStringBuilder来实现,因为它可以实现一段文字显示不同的颜色

但是貌似它只能固定哪些位置的文字显示什么样式,于是乎放弃。

然后就想到了用 

Html.fromHtml(String str)

来实现。

看方法名很简单,就是可以显示字符串str对应的html格式的文本

比如:

Html.fromHtml(<font color='red' size='24'>你好</font>" )

就将你好以html格式显示了,红色字体 大小24 

那么通过一个小Demo看下这个方法的简单使用:

我有三个字符串,字符串中姓名、数字长度都是不同的,实现让姓名显示红色,数字显示蓝色,其他文字显示默认灰色的效果

先写布局文件,三个TextView

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
    android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:gravity="center"
    android:orientation="vertical"
    tools:context=".MainActivity">

    <TextView
        android:id="@+id/html_text"
        android:gravity="center"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <TextView
        android:id="@+id/html_text2"
        android:gravity="center"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <TextView
        android:id="@+id/html_text3"
        android:gravity="center"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

</LinearLayout>

然后Activity 的onCreate()方法

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        textView = (TextView) findViewById(R.id.html_text);
        textView2 = (TextView) findViewById(R.id.html_text2);
        textView3 = (TextView) findViewById(R.id.html_text3);
        names = new ArrayList<>();
        counts = new ArrayList<>();
        message = new ArrayList<>();

        names.add("奥特曼");
        names.add("白雪公主与七个小矮人");
        names.add("沃德天·沃纳陌帅·帅德·布耀布耀德 ");

        counts.add(1);
        counts.add(123);
        counts.add(9090909);

        for (int i = 0; i < 3; i++) {
            message.add("<font color='red' size='20'>"+names.get(i)+"</font>"+"向您发来"+
                        "<font color='blue' size='30'>"+counts.get(i)+"</font>"+"条信息");
        }

        textView.setText(Html.fromHtml(message.get(0)));
        textView2.setText(Html.fromHtml(message.get(1)));
        textView3.setText(Html.fromHtml(message.get(2)));

    }

看下效果图,是不是很简单,只要简单的会html 就可实现这种效果

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏jianhuicode

学问Chat UI(1)

前言 由于项目需要,最近开始借鉴学习下开源的Android即时通信聊天UI框架,为此结合市面上加上本项目需求列了ChatUI要实现的基本功能与扩展功能。 ? 融...

26190
来自专栏codelang

仿电商商品分类的思路实现

21120
来自专栏Android干货园

Android 关于GridView那些事

版权声明:本文为博主原创文章,转载请标明出处。 https://blog.csdn.net/lyhhj/article/details/50...

10410
来自专栏学海无涯

Android开发之自定义View(二)

在 Android开发之自定义View(一)中,讲解了最复杂的一种自定义View,本次将剩下的两种讲完~~~ go,go,go 继承原有的控件,在原有控件基础上...

34680
来自专栏学海无涯

Android开发之ListView使用经验分享

在Android开发中,ListView是使用最广泛的组件之一,虽然谷歌推出了RecycleView,但是很多项目中依旧在使用ListView,本文将总结一下使...

33160
来自专栏程序员互动联盟

Android Metro风格的Launcher开发系列第三篇

前言: 各位小伙伴,又到了每周更新文章的时候了,本来是周日能发出来的,这不是赶上清明节吗,女王大人发话了,清明节前两天半陪她玩,只留给我周一下午半天时间写博客 ...

41780
来自专栏三好码农的三亩自留地

打造Android微信朋友圈下拉刷新控件

我们初步分析下,界面上主要有二个控件,一个彩虹状的圆形LoadingView,一个是ListView,那么我大致可以有下面三个步骤:

36220
来自专栏项勇

笔记20 | 学习整理开源APP(BaseAnimation)程序源码“中的通讯录效果(一)

17950
来自专栏Android学习之路

ViewDragHelper使用笔记及侧滑菜单实践

38660
来自专栏xingoo, 一个梦想做发明家的程序员

【插件开发】—— 7 SWT布局详解,不能再详细了!

前文回顾: 1 插件学习篇 2 简单的建立插件工程以及模型文件分析 3 利用扩展点,开发透视图 4 SWT编程须知 5 SWT简单控件的使用与布局搭...

245100

扫码关注云+社区

领取腾讯云代金券