我知道如何将自定义字体设置为操作栏。我只需要扩展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,但lib不会返回它。
有什么想法吗?
答案 0 :(得分:4)
我看到有点复杂......
您需要创建View
,将TextView
作为标题,为TextView
设置所需的字体,并使用setCustomView
放置使用新字体查看视图。
我希望它可以帮到你。
<强>更新强>
您是否尝试过创建自己的方法,如下所示:
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);
}
答案 1 :(得分:0)
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal"
android:padding="@dimen/padding_very_small"
android:weightSum="2" >
<TextView
android:id="@+id/uRecomendTitleText"
style="@style/TitleStyle"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_weight="0.5"
android:drawableLeft="@drawable/left_arrow"
android:text="@string/recommendation"
android:visibility="visible" />
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1.5"
android:orientation="horizontal" >
<TextView
style="@style/TitleStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical|right"
android:gravity="center"
android:paddingRight="@dimen/padding_very_small"
android:text="@string/rank" />
<TextView
android:id="@+id/uRecomendCount"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical|right"
android:background="@drawable/rounded_box"
android:gravity="center" />
</LinearLayout>
</LinearLayout>
答案 2 :(得分:0)
TextView txt=(TextView)findViewById(R.id.uRecomendTitleText);
Typeface AshtonsHand;
AshtonsHand = Typeface.createFromAsset(this.getAssets(),
IConstants.font);
txt.setTypeface(AshtonsHand);
getSupportActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);
getSupportActionBar().setBackgroundDrawable(
getResources().getDrawable(R.drawable.top_bg_back));
// getSupportActionBar().setDisplayUseLogoEnabled(false);
// getSupportActionBar().setDisplayShowTitleEnabled(true);
// getSupportActionBar().setDisplayShowHomeEnabled(false);
// getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setCustomView(R.layout.friends_list_actionbar);