TextView 实战之你真的懂我么?

j1Knx9T

不要以为别人是赢在了起跑线上,他们其实生在了终点。

写在前面的话

对于TextView,我想大家都已经熟的不能再熟了。但是它的用法我们真的熟么?为了避免总是一言不合就去翻官方文档,在这里我总结一下我也可能是你容易忽视的一些细节.

TextView设置基础

字符串资源里变量替换

Android开发中是拒绝硬编码的,我们可能会把一些字符串放在xml中当作资源使用,假设有如下情况:

我们在程序中需要使用这个字符串,但是A是一个变量,很常规的办法是取出这个字符串,然后用String的replace方法把A替换成用户的昵称。

其实,在android中有这样一个东西,那就是 XLIFF,全称叫 XML 本地化数据交换格式,英文全称 XML Localization Interchange File Format。

用法也是很简单的,如

程序中只要给变量赋值就可以了,如

把字符串打印出来如下

0Aho7n7

这里的1代表第一个变量,多个变量的话依次递增即可。

TextView xml文件可配置的属性

TextView中设置多种字体大小

比如在项目中经常遇到如下UI,

TmmIXah

像这样的两种字体大小放到一个TextView中,我们应该如何处理呢?需要用到 android.text 命名空间下的一些与 spannable相关的类和接口。如下:

这个经过转化过的textSpan就是我们需要的。

TextView中设置超链接

这个比较简单,设置我们上边提到的android:autoLink属性,默认为none。该属性的几个常量如下:

2qx3b5t

代码中的设置方式:setAutoLinkMask(int)。

参数和上边列表对应,分别为:Linkify.WEB_URLS,Linkify.EMAIL_ADDRESSES,Linkify.PHONE_NUMBERS,Linkify.MAP_ADDRESSES,Linkify.ALL

但是需要注意的是,当我们需要定制超链接的跳转时应该怎么做?答案是还是选择Spannable。代码如下:

运行效果如下图:

4zFQKCI

插入图片

Android中可以使用TextView的drawableXXX属性在文字周围插入图片。图片和文字之间的间距可以通过android:drawablePadding来设置。

xml中属性为:

代码中的设置方式:setCompoundDrawablesWithIntrinsicBounds(int left, int top, int right, int bottom)。

left,top等需传入资源id,不需要的话传0.

阴影

Android中设置阴影也比较简单,xml中可以这样设置:

代码中通过方法public void setShadowLayer (float radius, float dx, float dy, int color)来设置。

我的参数是这样的:

效果如下图:

2P3F5Ll

字体加粗或者倾斜

在xml布局文件中使用android:textStyle=”bold”可以将文字设置成粗体。在代码中设置的方法是:使用TextPaint的仿“粗体”设置setFakeBoldText为true。示例代码如下:

textstyle可设置的属性有:

gfTStsK

italic为倾斜,多属性可用”|”分开。

文字过长显示省略号或者跑马灯效果

android:ellipsize设置当文字过长时,该控件该如何显示。有如下值设置:

  • ”start”—–省略号显示在开头;
  • ”end”——省略号显示在结尾;
  • ”middle”—-省略号显示在中间;
  • ”marquee” ——以跑马灯的方式显示(动画横向移动)

android:marqueeRepeatLimit 在ellipsize指定marquee的情况下,设置重复滚动的次数,当设置为marquee_forever时表示无限次。实现需要控件获得焦点。

示例代码:

效果如下:

设置行间距

1、android:lineSpacingExtra
设置行间距,如”3dp”。

2、android:lineSpacingMultiplier
设置行间距的倍数,如”1.2″。

关于字体

我们可以通过设置android:typeface属性来控制字体,可以设置为normal, sans, serif, monospace四种。具体如下:

5CrEoYl

然后将我们的字体文件放到assets文件夹下。

但是需要注意的是,不要大量使用这种自定义字体,因为自定义字体会消耗更多的性能。

TextView中设置Html

TextView支持的Html标签

Textview只支持部分的html标签。具体如下:

显示多种颜色的字

Android支持html格式的字符串,通过调用Html.fromHtml(str)方法可以转换html格式的字符串str。示例代码如下:

效果如图:

RA5ZYDX

字体加粗

字体加粗还可以通过设置html格式字符串来实现

插入图片

插入图片还可以用html字符串来实现。不过需要用到ImageGetter类来对图片的src属性进行转换。

代码如下:

效果如下图:

pmkepiS

右边的sdfa是通过html来加粗的,下边的图片是通过html插入的。

结语

关注博主是一种态度,评论博主是一种欣赏!!

最后,欢迎大家关注我的微信公众号:CoderTopia。

打赏支持我写出更多好文章,谢谢!

打赏作者

打赏支持我写出更多好文章,谢谢!

任选一种支付方式

6 19 收藏 3 评论

关于作者:PleaseCallMeCoder

我是 PleaseCallMeCoder,一个小小的90后程序员。热衷于移动开发,喜欢研究新技术,奔跑在成为大神的路上。 个人主页 · 我的文章 · 29 ·   

相关文章

可能感兴趣的话题



直接登录
最新评论
跳到底部
返回顶部