Skip to content

Instantly share code, notes, and snippets.

@InsanityOnABun
Created January 4, 2015 03:35
Show Gist options
  • Star 10 You must be signed in to star a gist
  • Fork 4 You must be signed in to fork a gist
  • Save InsanityOnABun/95c0757f2f527cc50e39 to your computer and use it in GitHub Desktop.
Save InsanityOnABun/95c0757f2f527cc50e39 to your computer and use it in GitHub Desktop.
A Marquee-able Android Toolbar.
import android.content.Context;
import android.support.v7.widget.Toolbar;
import android.text.TextUtils;
import android.util.AttributeSet;
import android.widget.TextView;
import java.lang.reflect.Field;
public class MarqueeToolbar extends Toolbar {
TextView title;
public MarqueeToolbar(Context context) {
super(context);
}
public MarqueeToolbar(Context context, AttributeSet attrs) {
super(context, attrs);
}
public MarqueeToolbar(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
@Override
public void setTitle(CharSequence title) {
if (!reflected) {
reflected = reflectTitle();
}
super.setTitle(title);
selectTitle();
}
@Override
public void setTitle(int resId) {
if (!reflected) {
reflected = reflectTitle();
}
super.setTitle(resId);
selectTitle();
}
boolean reflected = false;
private boolean reflectTitle() {
try {
Field field = Toolbar.class.getDeclaredField("mTitleTextView");
field.setAccessible(true);
title = (TextView) field.get(this);
title.setEllipsize(TextUtils.TruncateAt.MARQUEE);
title.setMarqueeRepeatLimit(-1);
return true;
} catch (NoSuchFieldException e) {
e.printStackTrace();
return false;
} catch (IllegalAccessException e) {
e.printStackTrace();
return false;
} catch (NullPointerException e) {
e.printStackTrace();
return false;
}
}
public void selectTitle() {
if (title != null)
title.setSelected(true);
}
}
@oleksandr-dovhaliuk-gp1

Thank you for sharing your code.

@oleksandr-dovhaliuk-gp1

//I can't edit my previous comment :-(
I did a little bit improve your code - added functionality for subtitle.
If you do not mind, I'd like to share its complement on my own page on GitHub with a note that you have the source. Ok ? Please, answer me.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment