public class TextMarquee extends android.support.v7.widget.AppCompatTextView {
public TextMarquee(Context context, AttributeSet attrs) {
super(context, attrs);
setEllipsize(TextUtils.TruncateAt.MARQUEE);
setSingleLine();
setHorizontallyScrolling(true);
setMarqueeRepeatLimit(-1);
setSelected(true);
setFocusable(true);
setFocusableInTouchMode(true);
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
if (widthMeasureSpec != 0) {
int g = getGravity();
int mViewWidth = getMeasuredWidth();
String s = getText().toString();
int w = (int) getPaint().measureText(s);
if (w >= mViewWidth) {
setGravity(Gravity.LEFT);
} else {
setGravity(g);
}
}
}
@Override
protected void onFocusChanged(boolean focused, int direction, Rect previouslyFocusedRect) {
if (focused)
super.onFocusChanged(focused, direction, previouslyFocusedRect);
}
@Override
public void onWindowFocusChanged(boolean hasWindowFocus) {
if (hasWindowFocus)
super.onWindowFocusChanged(hasWindowFocus);
}
@Override
public boolean isFocused() {
return true;
}
}