TextView的常用属性

1.设置控件id

android:id="@+id/text\_view"  
android:id="@+id/textView"

设置该控件的id,不同xml页面可以有相同的id,但同一个页面不能用相同的id,ID随便取。
id有两种写法,一种是骆驼峰,就是第一个单词首字母小写,后面的单词都是首字母大写,
另一种就是都是小写,单词之间用 _ 符号来分开。两种写法,我更倾向于这一种,

2.设置控件的宽度

android:layout\_width=“match\_parent” 填充完父布局的宽度,就是父布局的有多宽  
android:layout\_width=“wrap\_content” 自适应布局,看内容的大小而定  
android:layout\_width=“10dp” 固定值:如10dp,控件固定10dp

3.设置控件的高度

android:layout\_height=“match\_parent” 填充完父布局的高度,就是父布局的有多高  
android:layout\_height=“wrap\_content” 自适应布局,看内容的大小而定  
android:layout\_height=“10dp” 固定值:如10dp,控件固定10dp

4.设置背景

设置TextView控件的背景,可以是颜色,也可以是图片

android:background="#CCCCCC"  
android:background="@color/bg\_text\_color"  
android:background="@drawable/bg\_text"

5.设置内边距

android:padding=“12dp” 设置四个边为12的内边距  
android:padding="@dimen/text\_padding"  
设置textView的内边距,上下左右都是上面的值,下面有单独设一边  
android:paddingTop=“12dp”  
android:paddingBottom=“12dp”  
android:paddingRight=“12dp”  
android:paddingLeft=“12dp”  
android:paddingEnd=“12dp”  
android:paddingStart=“12dp”

这里的左右和前后是区别的,左右就一定是左右,但是前不一定是左,如果系统语言是从左到右:如中文,那么前就代表左,如果系统语言是从右开始 :那么前就代表右边,所以如果左右内边距一样,推荐使用left和right,但如果不一样,推荐使用start和end,不然从右到左显示的手机,会出现偏差

6.设置外边距

android:margin=“12dp”  
android:marginTop=“12dp”  
android:marginBottom=“12dp”  
android:marginStart=“12dp”  
android:marginEnd=“12dp”  
android:marginLeft=“12dp”  
android:marginRight=“12dp”

设置外边距,与内边距差不多,但他们区别在于,如果是自适应大小的控件,那么设置内边距后,控件会大很多,但字体还是一样大小,监听触发的面积大了,而外边距就是,控件大小不变,只是本控件与其他控件相隔12dp的距离,请注意内边距和外边距的使用

7.设置文字在控件的位置

android:gravity=“center”  
android:gravity=“center\_horizontal”  
android:gravity=“center\_vertical”  
android:gravity=“end”  
android:gravity=“start”  
android:gravity=“left”  
android:gravity=“right”  
android:gravity=“right|bottom”

若控件大,但字体小的时候,该属性就发挥作用了,一个大面积的控件,字体显示的地方分别可以
左上,左中,左下,中上,居中,中下,右上,右中,右下9个位置

8.设置文字内容、字体大小、字体颜色、样式

android:text=“This is TextView” 用于该控件显示的内容  
android:textSize=“12sp” 用于控制该控件文字的大小,单位使用sp,同时AS建议字体大小不要低于12sp  
android:textColor="#FFFFFF" 用于设置字体的颜色  
上三种可以使用value文件夹里面的值文件,字符串、颜色值、与大小值  
android:text="@string/hello\_test"  
android:textSize="@dimen/text\_12\_sp"  
android:textColor="@color/textTitle"  
android:textStyle=“bold” 粗  
android:textStyle=“normal” 正常  
android:textStyle=“italic” 斜体

9.设置Ems

只有在宽度为自适应: android:layout\_width="wrap\_content"的时候才会生效  
android:minEms=“10”  
TextView一行最少有10个字符的宽度  
如果少于10个字符,TextView的宽度也为10个字符的宽度  
android:maxEms=“3”  
TextView一行最长只有3个字符的宽度

10.设置最小最大宽高度

android:minHeight=“100dp”  
android:minWidth=“100dp”  
android:maxHeight=“400dp”  
android:maxWidth=“400dp”

11.设置文本最多1行显示

android:maxLines=“1”  
允许TextView最多只有一行,不管你TextView有多大,他都是只显示一行文字

12.设置文本最多输入x个字符

android:maxLength=“10”  
允许TextView最多只有10个字符,超出不显示。

13.设置文本是否自动换行

默认是fasle,默认会自动换行  
android:singleLine=“true” 内容只显示在一行上  
android:singleLine=“false” 内容超出一行的最长限度会自动切换到下一行

14.设置间距

android:letterSpacing=“0.5”  
0为默认,每增加0.1都有明显的变化  
若为负数 ,则为减少行距  
android:lineSpacingExtra="-6dp"

15.设置行距倍数

android:lineSpacingMultiplier=“2”  
但只是设置默认行距的倍数,和android:lineSpacingExtra无关

16.设置行距倍数与额外行距

若没有android:lineSpacingExtra="10dp"属性,则总行距为默认的行距倍数  
但若有android:lineSpacingExtra=“10dp”,则总行距为10dp + 默认行距的倍数

17.超出省略的使用

原文字:一二三四五六七八九十十一十二十三十四十五十六十七十八十九二十二十一二十二二十三
(一到二十三的数)

android:ellipsize 与 android:singleLine配合使用  
省略在前面,内容从最后开始往前,前面省略  
android:singleLine=“true”  
android:ellipsize=“start”

省略在中间,内容前面从一开始,内容后面从最后开始,中间省略  
android:singleLine=“true”  
android:ellipsize=“middle”

省略在末尾,内容从前面开始,后面省略  
android:singleLine=“true”  
android:ellipsize=“end”

最简单的单行末尾省略  
android:singleLine=“true”  
不需要ellipsize都会末尾省略

当要求两行以上的内容进行省略的时候,就无法使用singleLine了,这是就需要maxLines。  
android:ellipsize 属性配合android:maxLines使用,这时候,ellipsize只能设置尾部超出省略,其他几个属性没作用的。  
android:maxLines=“2”  
android:ellipsize=“end”

判断内容是否省略

通过内部的getEllipsisCount()方法来获取省略的字数,如果是0,就是没有省略,大于0就是有省略

val ellipsizeCount = textView.layout.getEllipsisCount(textView.lineCount - 1)  
if (ellipsizeCount == 0) {  
Toast.makeText(this,"没有省略",Toast.LENGTH\_SHORT).show()  
}  
else {  
Toast.makeText(this, "超出省略了,且超出了${ellipsizeCount}个字符", Toast.LENGTH\_SHORT).show()  
}

跑马灯

必须设置单行  
android:singleLine=“true”  
同时设置跑马灯属性  
android:ellipsize=“marquee”  
在设置为无限滚动  
android:marqueeRepeatLimit=“marquee\_forever”  
同时动态设置  
textView.setSelected(true);