TextView控件:能向用户展现文本信息,可以设置该文本信息是否能够编辑,TextView默认自动换行
一、 两种使用方式:
第一种:在程序中创建TextView对象
TextView t = new TextView(this);//其中this代表的是当前的这个activity对象
t.setTect("hello world");
setContentView(t);
第二种:在XML布局文件中使用(用XML文件来控制所有的ui对象)
可以使用ALT+?打开提示内容
在layout下面的XML文件
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/hello_world" //也可以写入文本信息android:text="哈哈哈"
/>
二、TextView属性
1.设置字体大小
android:textSize="25sp" 设置字体的大小,推荐使用sp作为单位
sp:放大像素,Android默认使用sp作为字号单位 ,主要是用来字体显示的
dip=dp:设备独立像素,与设备硬件有关,不同硬件显示不同的效果
px:像素,不同设备显示不同效果
pt:point 长度单位
in:长度单位,英寸
mm:长度单位
设置字体的大小推荐使用sp作为单位
设置宽度或高度等属性时推荐使用dp(dip)作为单位
android:id="@+id/tv" 之所以加+号是因为tv要写到R.java中,写+号就会自动添加到R.java中,到时候可以直接使用R.***来进行引用
2. 改变TextView的字体颜色
a. 通过XML更改 android:textColor="#FF0000"
b. 通过代码更改
TextView tv = (TextView)findViewById(R.id.tv);
tv.setText(Html.fromHtml("欢迎大家<font color=blue>《小石川花花》</font>"));
setText是为了设置textView控件上面的内容,Html标签来定义文本的颜色信息,可以改变局部颜色,因为findViewById是view类的,需要强制转换成为TextView
c. TextView tv = (TextView)findViewById(R.id.tv);
SpannableStringBuilder style=new SpannableStringBuilder("setText是为了设置textView控件上面的内容,Html标签来定义文本的颜色信息,可以改变局部颜色");//针对text文本的类,信息是可以改变的
style.setSpan(new ForegroundColorSpan(Color.RED), 0, 6, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
style.setSpan(new ForegroundColorSpan(Color.GREEN), 6, 21, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
style.setSpan(new ForegroundColorSpan(Color.BLUE), 21, 34, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);//0,6代表范围
tv.setText(style);
备注:如果范围和实现字符串不符的话,应用会crash
3.设置超链
android:autoLink设置是否当文本为URL/Emial/电话话码等,文本显示为可点击的链接(none/web/email/phone/map/all)
4.自动滚动(跑马灯)
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="车诚俊,韩静书,李光洙,刘在石,大神,金钏国,哈哈,GARY,智孝,我的野蛮王妃,宫,天国的阶梯"
android:textSize="20sp"
android:singleLine="true"
android:focusable="true"
android:ellipsize="marquee"
android:marqueeRepeatLimit="marquee_forever"
android:focusableInTouchMode="true"
/>
当字数够长的时候想要文字滚动的效果,则需要跑使用android:focusable="true"以及android:focusableInTouchMode="true",如果没有这两个,则实现不了滚动效果,因为跑马灯效果需要TextView获得当前的焦点。
android:ellipsize="marquee"指的是设置文字过长时怎么显示 (start:省略号显示在开头,end:省略号显示在结尾,middle:省略号显示在中间,mqrquee:动画横向移动,跑马灯)
android:singleLine="true"指的是一行显示,因为TextView默认为自动换行
android:marqueeRepeatLimit="marquee_forever":设置滚动的次数 marquee_forever代表无限次
android:focusable="true":控件是否能够获取焦点
android:focusableInTouchMode="true" :是否在触摸模式下获得焦点
但是如果有两个TextView同时想要跑马灯的效果怎么办呢,因为跑马类效果首先要获取焦点,当第一个TextView中获取焦点之后第二个TextView没有办法获取焦点,(因为默认只有一个TextView处于focused状态)可以加上android:clickable="true"设置点击,点击切换焦点