<TextView
android:id="@+id/tvSongName"
android:layout_width="200px"
android:layout_height="wrap_content"
android:layout_marginLeft="46px"
android:layout_marginTop="62px"
android:layout_toRightOf="@id/ivSongIcon"
android:ellipsize="marquee"
android:focusable="true"
android:focusableInTouchMode="true"
android:marqueeRepeatLimit="marquee_forever"
android:scrollHorizontally="true"
android:singleLine="true"
android:text="A Farewell Spectacular"
android:textColor="@color/color_ffffff"
android:textSize="30px" />
主要代码如下:
横向滚动就要设置显示控件的宽度
android:layout_width="200px"
然后还要做下面的设置
android:ellipsize="marquee"
android:focusable="true"
android:focusableInTouchMode="true"
android:marqueeRepeatLimit="marquee_forever"
android:scrollHorizontally="true"
android:singleLine="true"
这样就可以实现走马灯效果了
如果上面的方法还是不行的话,很有可能是焦点没有获取到的原因,我们可以让焦点一直返回true就可以了
@SuppressLint("AppCompatCustomView")
public class MarqueTextView extends TextView {
public MarqueTextView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
public MarqueTextView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public MarqueTextView(Context context) {
super(context);
}
@Override
public boolean isFocused() {
return true;
}
}
如果textview调用了append方法,上面的方法将会失效;
若用上面的方法实现跑马灯的效果,textview只能调用settext方法