How to set custom font to sherlock's contextual action bar?

actionbarsherlock, android

Solution

I see is a little bit complex...

You will need to create a `View` where you will place your `TextView` as the title, set the font you want for this `TextView`, and use `setCustomView` to place your view with the new font.

I hope it helps you.

UPDATE

Have you tried create your own method, like this:

public void setActionModeTitle(CharSequence title) {
    String str = String.valueOf(title);
    str = str.toUpperCase(Locale.getDefault());
    SpannableString s = new SpannableString(str);
    MetricAffectingSpan span = new MetricAffectingSpan() {
        @Override
        public void updateMeasureState(TextPaint p) {
            p.setTypeface(FontManager.INSTANCE.getAppFont());
        }

        @Override
        public void updateDrawState(TextPaint tp) {
            tp.setTypeface(FontManager.INSTANCE.getAppFont());
        }
    };

    s.setSpan(span, 0, s.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

    actionMode.setTitle(s);
}

Problem

I know how to set a custom font to the action bar. I just have to extend SherlockFragmentActivity and override setTitle like this: ``` @Override public void setTitle(CharSequence title) { String str = String.valueOf(title); str = str.toUpperCase(Locale.getDefault()); SpannableString s = new SpannableString(str); MetricAffectingSpan span = new MetricAffectingSpan() { @Override public void updateMeasureState(TextPaint p) { p.setTypeface(FontManager.INSTANCE.getAppFont()); } @Override public void updateDrawState(TextPaint tp) { tp.setTypeface(FontManager.INSTANCE.getAppFont()); } }; s.setSpan(span, 0, s.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); getSupportActionBar().setTitle(s); } ``` However, things get complicated with a contextual action bar. The library uses a factory to return the contextual action bar, like this: ``` ActionMode mode = getSherlockActivity().startActionMode(mActionModeCallback); mode.setTitle("whatever"); ``` I COULD override ActionMode, yet the lib won't return it. Any ideas?

Original source