Android基础控件TextView

1、常用属性

        <TextView
            android:id="@+id/text11"    //组件id
            android:layout_width="match_parent" //宽度
            android:gravity="center" //内容对齐方式
            android:layout_height="100dp" //高度
            android:background="@drawable/back" //背景
            android:autoLink="web" //web,phone等连接
            android:text="www.baidu.com"/> //文本
            android:textColor="@color/colorPrimaryDark" //文本颜色
            android:focusable="true" //键盘状态下显示焦点
            android:focusableInTouchMode="true" //触屏下显示焦点
            android:marqueeRepeatLimit="marquee_forever" //重复滚动的次数
            android:ellipsize="marquee"  //文本显示模式 省略开头、中间、结尾、跑马灯
            android:singleLine="true"  //是否单行显示
          />

2、简单使用

xml文件

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout 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=".TextViewActivity">

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:paddingTop="5dp"
        android:paddingBottom="5dp"
        android:paddingRight="5dp"
        android:paddingLeft="5dp"
        android:gravity="center_horizontal">

        <TextView
            android:id="@+id/text11"
            android:layout_width="match_parent"
            android:gravity="center"
            android:layout_height="100dp"
            android:background="@drawable/back"
            android:autoLink="web"
            android:text="www.baidu.com"/>
        <TextView
            android:id="@+id/text22"
            android:layout_centerHorizontal="true"
            android:layout_width="150dp"
            android:text="你   好"
            android:gravity="center"
            android:layout_height="wrap_content"
            android:layout_below="@id/text11"
            android:background="@drawable/shape_back_values"/>
        <TextView
            android:id="@+id/text33"
            android:layout_width="match_parent"
            android:gravity="center"
            android:layout_height="100dp"
            android:layout_below="@id/text22"
            android:layout_marginTop="5dp"
            android:background="#ffffff"/>

        <TextView
            android:id="@+id/text44"
            android:layout_width="match_parent"
            android:gravity="center"
            android:layout_height="100dp"
            android:layout_below="@id/text33"
            android:layout_marginTop="5dp"
            android:background="@drawable/back"/>
        <TextView
            android:id="@+id/text55"
            android:layout_width="match_parent"
            android:gravity="center"
            android:layout_height="100dp"
            android:layout_below="@id/text44"
            android:textColor="@color/colorPrimaryDark"
            android:layout_marginTop="5dp"
            android:background="#e2e2e2"
            android:text="手机卡打飞机as类方法的看反馈的反馈打开了反馈的反馈上课啦反馈代理费路径"
            android:focusable="true"
            android:focusableInTouchMode="true"
            android:marqueeRepeatLimit="marquee_forever"
            android:ellipsize="marquee"
            android:singleLine="true"
          />


    </RelativeLayout>
</android.support.constraint.ConstraintLayout>

Java文件

public class TextViewActivity extends AppCompatActivity {

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

        TextView t3 = (TextView)findViewById(R.id.text33);
        SpannableString span  = new SpannableString("红色打电话斜体删除线绿色下划线图片:.");
        span.setSpan(new ForegroundColorSpan(Color.RED),0,2, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);

        span.setSpan(new URLSpan("tel:1421323123"),2,5,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
        span.setSpan(new StyleSpan(Typeface.BOLD_ITALIC),5,7,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);

        span.setSpan(new StrikethroughSpan(),7,10,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
        span.setSpan(new UnderlineSpan(),10,16,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
        span.setSpan(new ForegroundColorSpan(Color.GREEN),10,13,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
        Drawable d = ContextCompat.getDrawable(this,R.drawable.back);
        d.setBounds(0,0,50,50);
        ImageSpan imgSpan = new ImageSpan(d,ImageSpan.ALIGN_BASELINE);
        span.setSpan(imgSpan,18,19, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
        t3.setText(span);

//        BackgroundColorSpan 背景色
//        ClickableSpan 文本可点击,有点击事件
//        ForegroundColorSpan 文本颜色(前景色)
//        MaskFilterSpan 修饰效果,如模糊(BlurMaskFilter)、浮雕(EmbossMaskFilter)
//        MetricAffectingSpan 父类,一般不用
//        RasterizerSpan 光栅效果
//        StrikethroughSpan 删除线(中划线)
//        SuggestionSpan 相当于占位符
//        UnderlineSpan 下划线
//        AbsoluteSizeSpan 绝对大小(文本字体)
//        DynamicDrawableSpan 设置图片,基于文本基线或底部对齐。
//        ImageSpan 图片
//        RelativeSizeSpan 相对大小(文本字体)
//        ReplacementSpan 父类,一般不用
//        ScaleXSpan 基于x轴缩放
//        StyleSpan 字体样式:粗体、斜体等
//        SubscriptSpan 下标(数学公式会用到)
//        SuperscriptSpan 上标(数学公式会用到)
//        TextAppearanceSpan 文本外貌(包括字体、大小、样式和颜色)
//        TypefaceSpan 文本字体
//        URLSpan 文本超链接

        TextView t4 = (TextView)findViewById(R.id.text44);
        StringBuilder sb = new StringBuilder();
        for (int i=0;i<20;i++){
            sb.append("好友" + i + ",");
        }
        String user =sb.substring(0,sb.lastIndexOf(",")).toString();
        t4.setMovementMethod(LinkMovementMethod.getInstance());
        t4.setText(addClickPart(user),TextView.BufferType.SPANNABLE);

    }
    //定义一个点击每个部分文字的处理方法
    private SpannableStringBuilder addClickPart(String str) {
        //赞的图标,这里没有素材,就找个笑脸代替下~
        Drawable d = ContextCompat.getDrawable(this,R.drawable.back);
        d.setBounds(0,0,50,50);
        ImageSpan imgspan = new ImageSpan(d,ImageSpan.ALIGN_BASELINE);
        SpannableString spanStr = new SpannableString("p.");
        spanStr.setSpan(imgspan, 0, 1, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);

        //创建一个SpannableStringBuilder对象,连接多个字符串
        SpannableStringBuilder ssb = new SpannableStringBuilder(spanStr);
        ssb.append(str);
        String[] likeUsers = str.split(",");
        if (likeUsers.length > 0) {
            for (int i = 0; i < likeUsers.length; i++) {
                final String name = likeUsers[i];
                final int start = str.indexOf(name) + spanStr.length();
                ssb.setSpan(new ClickableSpan() {
                    @Override
                    public void onClick(View widget) {
                        Toast.makeText(TextViewActivity.this, name,
                                Toast.LENGTH_SHORT).show();
                    }

                    @Override
                    public void updateDrawState(TextPaint ds) {
                        super.updateDrawState(ds);
                        //删除下划线,设置字体颜色为蓝色
                        ds.setColor(Color.BLUE);
                        ds.setUnderlineText(false);
                    }
                },start,start + name.length(),0);
            }
        }
        return ssb.append("等" + likeUsers.length + "个人觉得很赞");
    }

}

效果图

原文地址:https://www.cnblogs.com/xianfeng-zhang/p/8036013.html