格式化TextView的文本

很多情况下,开发者需要添加一些特殊样式的文本突出重点内容或者为链接提供视觉反馈,以此提高应用程序的用户友好度。例如,若要实现如下的效果,我们该怎么办?

这里写图片描述

在本次的例子中,我们将会分析如何使用TextView添加不同样式的文本和链接。

Activity代码如下:

package com.example.huangfei.hack1;

import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.text.Html;
import android.text.Spannable;
import android.text.SpannableString;
import android.text.method.LinkMovementMethod;
import android.text.style.BackgroundColorSpan;
import android.widget.TextView;

public class MainActivity extends Activity {

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

        /**
         * 添加超链接
         * 我们通过Html.fromHtml()方法处理带HTML代码的文本内容,将HTML转化为一个Spanned对象,
         * 然后将该对象传入TextView的setText()方法中。
         */
        TextView textView1 = (TextView) findViewById(R.id.my_text_view_html);
        String text = "Visit <a href=\"http://www.hao123.com/\">www.baidu.com</a>";
        textView1.setText(Html.fromHtml(text));
        //点击链接将跳转到相应的网页
        textView1.setMovementMethod(LinkMovementMethod.getInstance());

        /**
         * 我们使用SpannableString类创建一个Spanned对象(SpannableString是Spanned的子类),并通过文本中
         * 字符的索引指定不同的跨度(span), 不同的跨度将文本内容分成不同的部分,然后通过SpannableString
         * 就可以为不同部分指定不同的样式。
         */
        Spannable text2 = new SpannableString("Hello World, MainActivity!");
        text2.setSpan(new BackgroundColorSpan(Color.RED), 1, 4, 0);
        text2.setSpan(new BackgroundColorSpan(Color.BLUE), 5, 9, 0);
        ((TextView) findViewById(R.id.my_text_view_spannable)).setText(text2);
    }

}

TextView是Android提供的一个简单却功能强大的UI控件。我们可以在应用程序中通过多种方法使用不同样式的文本,尽管TextView并不支持所有HTML标签,但是用于格式化文本内容已经足够了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值