您的位置:首页 > 其它

让TextView 自带滚动条

2014-04-24 11:22 162 查看
文字左右滚动三个属性:

android:singleLine="true"

android:ellipsize="marquee"

android:marqueeRepeatLimit="marquee_forever"

Android中我们为了实现文本的滚动可以在ScrollView中嵌入一个TextView,其实TextView自己也可以实现多行滚动的,毕竟 ScrollView必须只能有一个直接的子类布局。只要在layout中简单设置几个属性就可以轻松实现。

01
<
TextView
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"  
<!--实现多行
-->
07
android:maxLines="15"
<!--最多不超过15行
-->
08
android:textColor="#FF0000"
09
/>
10
11
<
TextView
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());
3
//
Android开发网提示相关的可以查看SDK中android.text.method分支了解更多
附:

顺便讲下 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();
2
3
private
Runnable
mScrollToBottom =
new
Runnable()
{
4
public
void
run()
{
5
mScrollView.scrollTo(
0
,
offset);
6
}
7
};
onTouch里面

1
mHandler.post(mScrollToBottom);
补充:

1,把 textview的 Ellipsize 设置成 marquee(上面有说)

2,把 Deprecated的 Single line 设置成 true

3,设置textview的Marquee repeat limit 属性(滚动回数,默认是无数回)

贴个代码吧.

view
source

print?

1
textview.setEllipsize(TextUtils.TruncateAt.MARQUEE);
2
textview.setSingleLine(
true
);
3
textview.setMarqueeRepeatLimit(
6
);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: