文字左右滚动三个属性:
android:singleLine="true"
android:ellipsize="marquee"
android:marqueeRepeatLimit="marquee_forever"
Android中我们为了实现文本的滚动可以在ScrollView中嵌入一个TextView,其实TextView自己也可以实现多行滚动的,毕竟 ScrollView必须只能有一个直接的子类布局。只要在layout中简单设置几个属性就可以轻松实现。
02 | android:id = "@+id/tvCWJ" |
03 | android:layout_width = "fill_parent" |
04 | android:layout_height = "wrap_content" |
05 | android:scrollbars = "vertical" |
06 | android:singleLine="false" |
08 | android:textColor="#FF0000" |
12 | android:id = "@+id/app_shortcontent" |
13 | android:layout_width = "wrap_content" |
14 | android:layout_height = "wrap_content" |
15 | android:singleLine = "true" |
16 | android:textColor = "#FFFFFFFF" |
17 | android:scrollHorizontally = "true" |
18 | android:focusable = "true" |
19 | android:ellipsize = "marquee" |
20 | android:marqueeRepeatLimit = "marquee_forever" /> |
当然我们为了让TextView动起来,还需要用到TextView的setMovementMethod方法设置一个滚动实例,代码如下
1 | TextView tv = (TextView)findViewById(R.id.tvCWJ); |
2 | tv.setMovementMethod(ScrollingMovementMethod.getInstance()); |
附:
顺便讲下 TextView 自动滚动的实现方法,下面介绍两种方法:
一、在代码中实现:
1 | textView.setEllipsize(TextUtils.TruncateAt.MARQUEE); |
2 | textView.setSingleLine( true ); |
3 | textView.setMarqueeRepeatLimit( 6 ); |
二、在XML中实现:
1 | < TextView android:id = "@+id/TextView01" android:layout_width = "wrap_content" |
2 | android:layout_height = "wrap_content" android:singleLine = "true" |
3 | android:text = "dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd" |
4 | android:marqueeRepeatLimit = "marquee_forever" android:ellipsize = "marquee" |
5 | android:scrollHorizontally = "true" android:width = "150dip" ></ TextView > |
一切OK,当 textView 获取焦点后,就会自动滚动。
补充==============================
不管是手动还是自动 你要实现滚动就得加scrollview
到时候可以通过handle来调用scrollview的scrollTo方法实现滚动
1 | Handler mHandler = new Handler(); |
3 | private Runnable mScrollToBottom = new Runnable() { |
5 | mScrollView.scrollTo( 0 , offset); |
onTouch里面
1 | mHandler.post(mScrollToBottom); |
补充:
1,把 textview的 Ellipsize 设置成 marquee(上面有说)
2,把 Deprecated的 Single line 设置成 true
3,设置textview的Marquee repeat limit 属性(滚动回数,默认是无数回)
贴个代码吧.
1 | textview.setEllipsize(TextUtils.TruncateAt.MARQUEE); |
2 | textview.setSingleLine( true ); |
3 | textview.setMarqueeRepeatLimit( 6 ); |