我知道如何将自定义字体设置为操作栏.我只需要扩展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,s.length(),Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
getSupportActionBar().setTitle(s);
}
但是,使用上下文操作栏会使事情变得复杂.该库使用工厂返回上下文操作栏,如下所示:
ActionMode mode = getSherlockActivity().startActionMode(mActionModeCallback);
mode.setTitle("whatever");
我可以覆盖ActionMode,但lib不会返回它.
有任何想法吗?
最佳答案
我觉得有点复杂……
您需要创建一个View,您将TextView作为标题放置,为此TextView设置所需的字体,并使用setCustomView将视图放置为新字体.
我希望它对你有所帮助.
UPDATE
您是否尝试过创建自己的方法,如下所示:
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,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
actionMode.setTitle(s);
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。