2013-07-03 2 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, но Либерал не вернет его.

Любые идеи?

ответ

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); 
Смежные вопросы