android - 如何将自定义字体设置为 sherlock 的上下文操作栏?

标签 android actionbarsherlock

我知道如何为操作栏设置自定义字体。我只需要像这样扩展 SherlockFragmentActivity 并覆盖 setTitle:

@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);
}

但是,上下文操作栏会使事情变得复杂。该库使用工厂返回上下文操作栏,如下所示:

ActionMode mode = getSherlockActivity().startActionMode(mActionModeCallback);
mode.setTitle("whatever");

我可以覆盖 ActionMode,但库不会返回它。

有什么想法吗?

最佳答案

我看有点复杂...

您需要创建一个View,您将在其中放置您的TextView 作为标题,为该TextView 设置您想要的字体,并使用 setCustomView 将您的 View 放置为新字体。

希望对你有帮助。

更新

您是否尝试过创建自己的方法,如下所示:

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);
}

关于android - 如何将自定义字体设置为 sherlock 的上下文操作栏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17452148/

相关文章:

Unity3d 应用程序中的 Android 菜单按钮

android - 构建 Appbundle (Flutter) 时 keystore 密码不正确

java - 膨胀类 com.actionbarsherlock.internal.widget.ActionBarContainer 时出错

android - Log.d 与 ActionBarScherlock

android - 在 FragmentTabPager 中的 TabHost 中向 Fragment 发送消息

android - 如何以编程方式更改对话框背景颜色?

android - 如何在 Kotlin 中将 ArrayList 转换为 JSONArray()

android - PWA 未显示在 Android 应用程序抽屉中

android - 将 android 操作栏兼容、寻呼机和选项卡示例与 ActionBarSherlock 进行比较

android - 操作项的自定义下拉菜单 (actionbarsherlock)