TextView的总结

前言

对于这个组件,大家用的都比较多,也好像没啥要说的

TextView的总结_第1张图片

可是,也不能不写吧,那我就给在座的各位随便聊点(混就完事了)。

首先,还是老规矩,我们来简单的实现这个组件的用法,如下:


这样子,我们就在爪机屏幕上瞧到我们的 Hello Android 了

TextView的总结_第2张图片

再给它设置个点击事件

textView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(TextviewActivity.this,"点我,点我!",Toast.LENGTH_LONG).show();
            }
        });

这样子,我们的TextView的内容就介绍完了

TextView的总结_第3张图片

Emmmmmmm,那我就把前辈们总结的TextVIew属性搬过来凑下字数吧。

属性 说明 备注
android:textAllCaps = "true" 是否自动将小写字母转化为大写字母 实测自动将我们的字母转化成大写字母
android:textStyle = "bold" 字体风格,可选值为[bold、italic、normal][加粗、斜体、正常] 实测有效
android:maxLines = "3" 最大行数 实测有效(多余的部分将被直接省略),设置为1行时直接使用(android:singleLine = "true")
android:minLines = "1" 最小行数 实测有效(缺少的部分由空白填充 等于 设置了对应行数的高度)
android:ellipsize = "end" 设置文字长度超出TextView时出现省略符号的位置。可选值为[none、start 、end、middle、marquee][无省略符、开头、结尾、中间、跑马灯模式]。当选择marquee时需要配合singleLine使用 测试有效,但是需要配合单行使用,不是单行时,会自动换行,并且跑马灯的效果还需要设置一个 android:focusableInTouchMode="true" 属性才可以动起来
android:drawableXXX = "@drawable/img" 用于在文字周围设置图片 实测有效,但是需要注意的是,图片会显示它本身的大小,如果Tv设置了高度,那么图片也只是显示这么高/宽的内容,如果是自适应,那么图片将会直接显示原大小。
android:lineSpacingExtra = "10dp" 设置行间距 实测有效
android:lineSpacingMultiplier = "0.5" 设置行间距的倍数 实测有效,与上面的属性一起用更好哦
android:textIsSelectable = "true" 文本内容是否可以选中 实测有效,这样子我们的TextView显示的内容就能被选中复制了
android:textColorHighlight = "@color/blue" 文本被选中后高亮显示的颜色 实测有效,与上面的内容一起使用更好哦
android:autoLink = "all" 设置需要自动识别的链接格式。可选值为[none、all、email、phone、web][不识别、全部识别、邮箱、电话号码、网址] 实测有效,可放心食用
android:textColorLink = "@color/red" 设置链接颜色 实测有效,与上面的属性一起用更好哦
android:letterSpacing = "1.5" 以标准字体宽度的倍数作为字符间距 实测有效,但是最低支持到API 21

是不是感觉收获满满,有种想睡觉的感觉

TextView的总结_第4张图片

然鹅,这些属性大多数我日常工作都没用到,我遇到的需求有个是让它的内容可以滑动查看,哦豁,完了,上面没有属性介绍让TextView内容滑动,那咋办咧,莫慌,根据老夫多年百度的经验,我们只需要在xml中TextView的属性中加入:

android:scrollbars="vertical"

然后,在Activity中给它设置:

textView.setMovementMethod(ScrollingMovementMethod.getInstance());

这样子,我们的TextVie就能愉快的滑动看下超出的内容了。

TextView的总结_第5张图片

到这里,我们TextView的基本内容就讲的差不多了,至于差多少,我也不知道。反正 Spannable 我还没说。

TextView的总结_第6张图片

关于 Spannable ,根据字面意思,我们可以猜一下,跨区??????鬼知道是啥,好吧,看大佬们的介绍,我的理解为 它可以将我们一段文字内容变成不同的显示区域,如下:


TextView的总结_第7张图片

这是一个TextView,但是,它显示的内容却可以有很多种,那么是怎么实现的咧?代码如下:

Spannable testSpannable=new SpannableString("我是一段文字。这是第一个显示区域、这是第二个显示区域、这是第三个显示区域、这是第四个显示区域、这是第五个显示区域(点击事件)");
        testSpannable.setSpan(new BackgroundColorSpan(Color.GRAY),
                7,16,Spanned.SPAN_INCLUSIVE_EXCLUSIVE);//设置背景色
        testSpannable.setSpan(new ForegroundColorSpan(Color.BLUE),
                17,26,Spanned.SPAN_INCLUSIVE_EXCLUSIVE);//设置前景色
        testSpannable.setSpan(new UnderlineSpan(),
                27,36,Spanned.SPAN_INCLUSIVE_EXCLUSIVE);//设置下划线
        testSpannable.setSpan(new URLSpan("http://www.baidu.com"),
                37,46,Spanned.SPAN_INCLUSIVE_EXCLUSIVE);//设置超链接
        testSpannable.setSpan(new ClickableSpan() {
            @Override
            public void onClick(View widget) {
                Toast.makeText(widget.getContext(),"文本内点击",Toast.LENGTH_SHORT).show();
            }
        },57,61,Spanned.SPAN_INCLUSIVE_EXCLUSIVE);//设置点击事件
        textView.setText(testSpannable);
        textView.setMovementMethod(new LinkMovementMethod());//支持超链接和点击事件

具体的操作过程就是,我们创建一个Spannable 对象(通过SpannableString或SpannableStringBuilder),在这里面写入我们需要展示的整段文字。然后,去设置对应位置的文字所需要的效果即可。

TextView的总结_第8张图片
更新一:关于DrawableXXX相关图片太大了咋处理

比如:



这样子,是不是很脑壳疼,你说拆开写吧,麻烦,不拆开吧,很麻烦,所以,我找到了解决办法,请看:(在drawable中新建一个资源文件,把图片和它的大小写在这里)



    

然后,在TextView中加入:


于是,现在就变成这样了

在代码中也可以去设置图片大小(哪怕之前没有加图片),代码如下

Drawable drawable = getResources().getDrawable(R.drawable.main_img_people);//找到图片
drawable.setBounds(0, 0, 60, 60);//设置大小
textView.setCompoundDrawables(drawable, null, null, null);//设置图片(对应左上右下)

啊哈哈哈哈,这样子,就可以对TextView周边的图片为所欲为了。

TextView的总结_第9张图片

最后,我找了一些常用的效果对应的Span属性,请大家笑纳。

属性 说明 举例代码 备注
BackgroundColorSpan 设置背景色 testSpannable.setSpan(new BackgroundColorSpan(Color.GRAY),7,16,Spanned.SPAN_INCLUSIVE_EXCLUSIVE) 实测有效
ForegroundColorSpan 设置文字颜色 testSpannable.setSpan(new ForegroundColorSpan(Color.BLUE),7,16,Spanned.SPAN_INCLUSIVE_EXCLUSIVE) 实测有效
StrikethroughSpan 设置删除线样式 testSpannable.setSpan(new StrikethroughSpan(),7,16,Spanned.SPAN_INCLUSIVE_EXCLUSIVE) 实测有效
UnderlineSpan 设置下划线样式 testSpannable.setSpan(new UnderlineSpan(),7,16,Spanned.SPAN_INCLUSIVE_EXCLUSIVE) 实测有效
URLSpan:设置链接样式(配合LinkMovementMethod) testSpannable.setSpan(new URLSpan("http://www.baidu.com"),7,16,Spanned.SPAN_INCLUSIVE_EXCLUSIVE) 实测有效
ClickableSpan 设置可点击样式(配合LinkMovementMethod) testSpannable.setSpan( new ClickableSpan() {public void onClick(View widget) { ... } }, 7,16,Spanned.SPAN_INCLUSIVE_EXCLUSIVE) 实测有效
StyleSpan 设置粗体、斜体等样式(1为粗体、2为斜体、3为粗斜体) testSpannable.setSpan(new StyleSpan(3), 7,16,Spanned.SPAN_INCLUSIVE_EXCLUSIVE) 实测有效
SubscriptSpan 设置下标样式 testSpannable.setSpan(new SubscriptSpan(), 7,16,Spanned.SPAN_INCLUSIVE_EXCLUSIVE) 实测有效
SuperscriptSpan 设置上标样式 testSpannable.setSpan(new SuperscriptSpan(), 7,16,Spanned.SPAN_INCLUSIVE_EXCLUSIVE) 实测有效

好了,这篇文章先到这里,后期有新的的再补充(客套话)。


TextView的总结_第10张图片

你可能感兴趣的:(TextView的总结)