一、首先看一下TextView的继承体系:
从图中可以看出TextView继承自View,同时也是EditText、Button、CheckedTextview、Chronometer和DigitalClock的父类。
二、TextView的常用属性
1、android:drawableEnd:在文本框内结尾绘制指定的图像
2、android:drawableStart:在文本框内开始绘制指定的图像
3、android:drawableBotton:在文本框内底部绘制指定的图像
4、android:drawableTop:在文本框内顶部绘制指定的图像
5、android:drawableLeft:在文本框内左边绘制指定的图像
6、android:drawableRight:在文本框内右边绘制指定的图像
(注:以上3-6在Java代码中对应的设置方法:setCompoundDrawablesWithIntrinsicBounds(),可以传入4个资源id或4个Drawable对象)
7、android:ellipsize:设置当显示的文字超过了TextView的长度时如何处理文本内容
none:不处理
start:在开始处截断,显示省略号
middle:在中间截断,显示省略号
end:在结尾处截断,显示省略号
marquee:滚动动画显示文本
(注:要通过marquee属性来实现跑马灯的效果一般要配合
android:singleLine="true"
android:focusable="true"
android:focusableInTouchMode="true"
这三个属性一起使用才有效)
8、android:marqueeRepeatLimit:设置marquess动画重复的次数
9、android:fontFamily:设置文本框内的字体,安卓内建的字体有 normal sans serif monospace 四种
注:实现自定义字体的方法:
1、在assets目录下新建fonts目录,把ttf字体文件放到这
2、程序中调用:
AssetManager mgr=getAssets(); //得到AssetManager
Typeface tf=Typeface.createFromAsset(mgr, "fonts/ttf.ttf"); //根据路径得到Typeface
tv.setTypeface(tf); //设置字体
10、android:textStyle:设置文字样式
normal:正常
bold:粗体
italic:斜体
bold|italic:粗体加斜体
注:在xml文件中该属性只对英文有效,对中文无效,如果已经在代码中自定义了字体,那么该属性对中英文都无效
解决方法:(目前没找到支持仿斜体的方法)
TextView tv = (TextView)findViewById(R.id.TextView01);
tv.getPaint().setFakeBoldText(true); //中文仿“粗体”--使用TextPaint的仿“粗体”设置setFakeBoldText为true。
11、android:lineSpacingExtra:控制两行文本之间的额外间距,与android:lineSpacingMultiplier结合使用
12、android:lineSpacingMultiplier:控制两行文本之间的额外间距,每行文本的高度 乘以 该属性值+android:lineSpacingExtra的属性值。
注:11、12在代码中对应的方法是setLineSpacing(float,float);
13、android:lines:设置文本框默认占几行