先上代码和效果
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:Android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <TextView android:layout_width="100px" android:layout_height="wrap_content" android:text="跑马灯效果:北京又开始下大雨了,看海!" android:textColor="@android:color/white" android:focusable="true" android:ellipsize="marquee" android:marqueeRepeatLimit="marquee_forever" android:focusableInTouchMode="true" android:scrollHorizontally="true" /> </LinearLayout>为什么android:layout_width只有100px呢,而android:text又那么长呢?跑马灯效果其实就是在有限的长度里显示完比该长度长的内容,正如代码中的text是“跑马灯效果:北京又开始下大雨了,看海!”,它会循环的显示
另外,如果没有方向键和滚动球的话,即使设置了跑马灯的效果,也不能够看到效果,因为必须在当前的View上得到焦点后才能可能到效果。
下面在说说里面的拿几个不明白的属性
1、android:ellipsize:这就是跑马灯的设置,作用是当文字过长的时候,该控件如何显示所有的文字。
它有如下的选项:
(1)start:省略号显示在开头
(2)end:省略号显示在结尾
(3)middle:省略号显示在中间
(4)marguee:以跑马灯的方式显示(横向移动)
2、android:margueeRepeatimit:在ellipsize指定marques的情况下,设置重复滚动的次数,当设置为marquee_forever时表示无限次循环
3、android:focusable=”true”:设置是否可聚焦。
4、android:focusableInTouchMode=”true”:设置是否触摸模式。
5、android:scrollHorzontally=”true”:设置文本超出TextView长度的情况下,是否出现横拉条
关于Touch Mode
当用户在使用方向键或轨迹球浏览用户界面时,有必要给于一个焦点在可操作的组件上(如一个Button),使用户可以看到它将接受输入命令。如果设备有触摸功能,那么,当用户与界面的交互就不再需要有一个高亮在组件上,或一个焦点在view上,因此,模式的互动名为"触摸模式"。对于一个触摸设备,一旦有用户接触屏幕时,该设备将进入触摸模式.在点触某个View后,只有的它的方法isFocusableInTouchMode()返回为真时,才会有聚集焦点,如文本编辑工具。其他的界面只可以点触,但不会聚集焦点(高亮),如button 被点触时就不会聚集焦点,当它被按下时只会调用on-click监听器的回调方法。