关于android中TextView的富文本

首先 这个 富文本,简单来说,就是可以对文本中的文字操作的一些类的使用,

比如,超链接了,识别,html代码了,接下来举例如下,效果图


第一个textview,点击跳转,第二个是,点击,就是点击事件的处理,第三个就是自动识别,别打开相应的工具,想,默认浏览器,默认拨号器,默认emal了

布局如下




    
    

    



java代码如下

package com.ding.zi.testidea;

import android.os.Parcel;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.Html;
import android.text.Spannable;
import android.text.SpannableString;
import android.text.Spanned;
import android.text.TextPaint;
import android.text.method.LinkMovementMethod;
import android.text.style.ClickableSpan;
import android.text.style.UnderlineSpan;
import android.text.util.Linkify;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {
    private TextView textView;

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


    /**
     * 对tv1的实现,即使超链接
     */
    private void initTv1() {
        String str = "哈哈哈 超链接是@天天我赞你了哦";
        textView = (TextView) findViewById(R.id.textview);
        textView.setText(Html.fromHtml(str));
        textView.setMovementMethod(LinkMovementMethod.getInstance());//默认打开浏览器.跳转到默认浏览器
    }

    /**
     * 对tv2文字中间部分开始,设置点击事件
     */
    private void initTV2() {
        TextView tv2 = (TextView) findViewById(R.id.textview2);
        String str = "点击@我跳转";
        //创建Spannablestring
        SpannableString spannableString = new SpannableString(str);
        //对文本的中间部分设置点击事件
        spannableString.setSpan(new ClickableSpan() {
            @Override
            public void onClick(View widget) {
                Toast.makeText(getApplicationContext(), "点击时候,成功!",
                        Toast.LENGTH_LONG).show();
            }
        }, 2, 4, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
        tv2.setText(spannableString);
        //设置,点击后成功跳转
        tv2.setMovementMethod(LinkMovementMethod.getInstance());
    }

    /**
     * 设置自动识别的tv
     * 去除下划线
     */
    private void initTv3() {
        TextView tv3 = (TextView) findViewById(R.id.textview3);
//        ClickableSpan//去除下划线的类
        NoUnderLineSpan underLineSpan = new NoUnderLineSpan();
        if (tv3.getText() instanceof Spannable) {//是富文本
            Spannable s = (Spannable) tv3.getText();
            s.setSpan(underLineSpan, 0, s.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
        }
    }

    //去除下划线的类
    public static class NoUnderLineSpan extends UnderlineSpan {
        public NoUnderLineSpan() {
        }

        public NoUnderLineSpan(Parcel src) {
        }

        @Override
        public void updateDrawState(TextPaint ds) {
            ds.setUnderlineText(false);
        }

    }
}




你可能感兴趣的:(Android)