2013-07-03 63 views
5

我知道如何將自定義字體設置爲操作欄。我只是延長SherlockFragmentActivity和覆蓋的setTitle這樣的:如何將自定義字體設置爲sherlock的上下文操作欄?

@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將不會返回它。

任何想法?

回答

4

我看到的是一個有點複雜......

您將需要創建一個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, 0, s.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 

    actionMode.setTitle(s); 
} 
+0

有沒有辦法改變僅用於標題TextView的? –

+0

適合您的更新。 –

+0

編輯2工作!我早些時候嘗試過,但無濟於事。畢竟這很簡單。謝謝! –

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> 
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); 
相關問題