public class MarqueeTextView extends AppCompatTextView {
private boolean isMarqueeEnable = false;
public MarqueeTextView(Context context) {
super(context);
init(context);
}
public MarqueeTextView(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
init(context);
}
public MarqueeTextView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
init(context);
}
private void init(Context context) {
setSingleLine();
}
public void setMarqueeEnable(boolean enable) {
setMarqueeRepeatLimit(-1);
if (isMarqueeEnable != enable) {
isMarqueeEnable = enable;
if (enable) {
setEllipsize(TextUtils.TruncateAt.MARQUEE);
} else {
setEllipsize(TextUtils.TruncateAt.END);
}
onWindowFocusChanged(enable);
}
}
public boolean isMarqueeEnable() {
return isMarqueeEnable;
}
@Override
public boolean isFocused() {
return isMarqueeEnable;
}
@Override
protected void onFocusChanged(boolean focused, int direction, Rect previouslyFocusedRect) {
super.onFocusChanged(isMarqueeEnable , direction, previouslyFocusedRect);
}
@Override
public void onWindowFocusChanged(boolean hasWindowFocus) {
super.onWindowFocusChanged(isMarqueeEnable );
}
}
使用方法:
// 当获取焦点时调用
tvTitle.setMarqueeEnable(hasFocus);
//或者让其一直跑
tvTitle.setMarqueeEnable(true);
1435

被折叠的 条评论
为什么被折叠?



