要实现跑马灯效果则需要获取焦点,当失去焦点的时候滚动会停止
代码
<xxx.MarqueeTextView
android:id="@+id/ps_tv_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:ellipsize="marquee"
android:focusable="true"
android:focusableInTouchMode="true"
android:gravity="center"
android:includeFontPadding="false"
android:marqueeRepeatLimit="marquee_forever"
android:scrollHorizontally="true"
android:singleLine="true"
android:textColor="@color/ps_color_33"
android:textSize="14sp"
tools:text="@string/ps_camera_roll" />
public class MarqueeTextView extends AppCompatTextView {
public MarqueeTextView(Context context) {
super(context);
}
public MarqueeTextView(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
}
@Override
public boolean isFocused() {
return true;
}
@Override
public boolean isSelected() {
return true;
}
@Override
protected void onFocusChanged(boolean focused, int direction, Rect previouslyFocusedRect) {
if (focused){
super.onFocusChanged(true, direction, previouslyFocusedRect);
}
}
@Override
public void onWindowFocusChanged(boolean hasWindowFocus) {
if (hasWindowFocus) {
super.onWindowFocusChanged(true);
}
}
}