有两种方法实现走马灯效果
第一种是在XML中设置
<TextView
android:id="@+id/tv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ellipsize="marquee"//这里设置为走马灯,必须
android:marqueeRepeatLimit="marquee_forever"//循环无限次
android:singleLine="true"//设置单行,必须
android:scrollHorizontally="true"//横向滚动,必须
android:maxEms="10"
android:text="很长很长很长很长很长很长很长很长很长很长很长很长"/>
同时要在代码中设置
TextView textView = findViewById(R.id.tv);
textView.setSelected(true);
第二种是直接在代码中设置
TextView t = new TextView(this);
t.setText("很长很长很长很长很长很长很长很长很长很长很长很长");
t.setTextColor(Color.parseColor("#000000"));
//设定为WRAP_CONTENT 否则setMaxEms无效
LayoutParams layoutParams = new LayoutParams(LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT);
t.setLayoutParams(layoutParams);
t.setMaxEms(10);
t.setSingleLine(true); //单行,必须
t.setEllipsize(TextUtils.TruncateAt.MARQUEE);//设置为走马灯,必须
t.setMarqueeRepeatLimit(-1);//无限循环,如设置1则一次
t.setHorizontallyScrolling(true);//横向滚动,必须
t.setSelected(true);//必须
layout.addView(t);//加载到布局
android:singleLine=”true”
实际上Android Studio 在设置单行的时候会报提示已经过时,暂时没有找到替代方法,不过设置的话依然能达到效果
这里只有文字超出设定的ems或者一行无法显示的情况下才会有效果,可以通过自定义View实现