Android 控件长度单位详解
首先,在讲TextView之前,我们先了解一下Android控件中的长度单位。在Android开发过程中,我们经常使用到长度单位,最常见的就是dp和sp了,但是除了这两个单位之外,还有px,in,pt,mm,接下来就看一下它们的含义吧。
dp(与密度无关的像素):逻辑长度单位,在 160 dpi 屏幕上,1dp=1px=1/160英寸。随着密度变化,对应的像素数量也变化,但并没有直接的变化比例。
sp(与密度和字体缩放度无关的像素):与dp类似,但是可以根据用户的字体大小首选项进行缩放。
尽量使用dp作为空间大小单位,sp作为和文字相关大小单位
px(Pixels ,像素):对应屏幕上的实际像素点。例如,320480的屏幕在横向有320个象素,在纵向有480个象素。
in(Inches ,英寸):屏幕物理长度单位。每英寸等于2.54厘米。例如,形容手机屏幕大小,经常说,3.2(英)寸、3.5(英)寸、4(英)寸就是指这个单位。这些尺寸是屏幕的对角线长度。如果手机的屏幕是3.2英寸,表示手机的屏幕(可视区域)对角线长度是3.22.54 = 8.128厘米。
pt(Points ,磅):屏幕物理长度单位, 表示一个点,是屏幕的物理尺寸。大小为1英寸的1/72。
mm(Millimeters ,毫米):屏幕物理长度单位。
原文地址:[https://blog.csdn.net/yao_guet/article/details/6288279]
OK,接下来进入主题!
TextView是View的直接子类,继承了View的属性和方法,我们先看看TextView的一些属性
属性 | 描述 |
---|---|
android:lines | 多行显示 |
android:marqueeRepeatLimit | 跑马灯重复限制 |
android:maxLines | 最大文本行数 |
android:minLines | 最小文本行数 |
android:maxWidth | 最大文本长度 |
android:textAllCaps | 文本全部大写 |
android:textAppearance | 基本的文字颜色,字体,大小,风格 |
android:lineSpacingExtra | 设置行间距 |
android:minEms | 最小系统兼容 |
android:maxEms | 最大系统兼容 |
android: textStyle | 设置 TextView 的文本字体 |
android:ellipsize | 如果设置了该属性,当 TextView 中要显示的内容超过了 TextView 的长度时,会对内容进行省略,可取的值有 start、middle、end 和 marquee |
接下来我们看一下TextView有什么好玩的效果,因为gif图上传不成功(我也不知道为什么),所以只能上传图片
代码部分
- 限制TextView的行数,在xml文件添加属性,行数自定义
android:maxLines="1"
- 省略号表示未显示出来的文字,在xml文件添加属性即可
android:maxLines="1"
android:ellipsize="end"
- 在TextView的左右上下位置添加图片
android:drawableLeft="@drawable/right" //左边
android:drawableRight="@drawable/right" //右边
android:drawableBottom="@drawable/right" //下边
android:drawableTop="@drawable/right" //上边
- 中划线,在代码中添加以下语句
//抗锯齿
tv_center.getPaint().setAntiAlias(true);
//中划线
tv_center.getPaint().setFlags(Paint.STRIKE_THRU_TEXT_FLAG);
- 下划线,同样在代码中添加以下语句
//抗锯齿
tv_under.getPaint().setAntiAlias(true);
//下划线
tv_under.getPaint().setFlags(Paint.UNDERLINE_TEXT_FLAG);
- 跑马灯效果,在xml文件中添加以下属性
android:singleLine="true"
android:ellipsize="marquee"
android:marqueeRepeatLimit="marquee_forever"
android:focusable="true"
android:focusableInTouchMode="true"
OK,TextView的一些常用用法都举例完了,如有错误,请大神指正!谢谢!