有时候我们使用TextView显示文本,只想把所有内容用一行显示出来,但是一行又显示不完,就需要让文本实现水平滚动的效果。
具体实现方法如下:
1,实现自定义TextView并实现isFocused()方法,代码如下:
1 public class RollTextView extends TextView{ 2 3 public RollTextView(Context context) { 4 super(context); 5 } 6 public RollTextView(Context context, AttributeSet attrs) { 7 super(context, attrs); 8 } 9 10 public RollTextView(Context context, AttributeSet attrs, int defStyle) { 11 super(context, attrs, defStyle); 12 } 13 @Override 14 public boolean isFocused() { 15 return true; 16 } 17 }
2,为自定义TextView设置singleLine,ellipsize,marqueeRepeatLimit属性,布局文件代码如下:
1 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 2 xmlns:tools="http://schemas.android.com/tools" 3 android:layout_width="match_parent" 4 android:layout_height="match_parent" 5 android:paddingBottom="@dimen/activity_vertical_margin" 6 android:paddingLeft="@dimen/activity_horizontal_margin" 7 android:paddingRight="@dimen/activity_horizontal_margin" 8 android:paddingTop="@dimen/activity_vertical_margin" 9 tools:context=".MainActivity" > 10 11 <com.tony.test.RollTextView 12 android:id="@+id/tv_test" 13 android:layout_width="wrap_content" 14 android:layout_height="wrap_content" 15 android:singleLine="true" 16 android:ellipsize="marquee" 17 android:marqueeRepeatLimit="marquee_forever" 18 android:text="TextView文字滚动TextView文字滚动TextView文字滚动TextView文字滚动TextView文字滚动TextView文字滚动" /> 19 </RelativeLayout>
就这样简单的实现了文字滚动效果了,如下图。