2014-10-29 3 views
0

전체 응용 프로그램의 글꼴을 설정해야합니다. 지금까지 모든 작업을 수행했지만 작업 표시 줄의 오른쪽에 나타나는 메뉴 항목이 있습니다.작업 표시 줄 menuitem의 글꼴을 변경하는 방법?

@Override 
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { 
    super.onCreateOptionsMenu(menu, inflater); 
    MenuItem item = menu.add(21, 66, 0, "Send"); 
    item.setTitle("Send"); 
    item.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS); 
} 

가 어떻게이 항목에 대한 특정 서체를 설정합니까 : 여기

하나 내가 만드는 설정하는 방법입니까?

답변

2

당신이 코드를 사용할 수 있습니다

Typeface typeface = Typeface.createFromAsset(getAssets(),"fonts/font.ttf"); 
TypefaceSpan actionBarTypeFace = new CustomTypefaceSpan("", typeface); 
SpannableString s = new SpannableString("Item"); 
s.setSpan(actionBarTypeFace, 0, s.length(), 
        Spannable.SPAN_INCLUSIVE_INCLUSIVE); 
MenuItem item = menu.add(21, 66, 0, s); 
item.setTitle(s); 

CustomTypeFaceSpan을 :

public class CustomTypefaceSpan extends TypefaceSpan { 
    private final Typeface newType; 

    public CustomTypefaceSpan(String family, Typeface type) { 
     super(family); 
     newType = type; 
    } 

    @Override 
    public void updateDrawState(TextPaint ds) { 
     applyCustomTypeFace(ds, newType); 
    } 

    @Override 
    public void updateMeasureState(TextPaint paint) { 
     applyCustomTypeFace(paint, newType); 
    } 

    private static void applyCustomTypeFace(Paint paint, Typeface tf) { 
     int oldStyle; 
     Typeface old = paint.getTypeface(); 
     if (old == null) { 
      oldStyle = 0; 
     } else { 
      oldStyle = old.getStyle(); 
     } 

     int fake = oldStyle & ~tf.getStyle(); 
     if ((fake & Typeface.BOLD) != 0) { 
      paint.setFakeBoldText(true); 
     } 

     if ((fake & Typeface.ITALIC) != 0) { 
      paint.setTextSkewX(-0.25f); 
     } 

     paint.setTypeface(tf); 
    } 
} 
+0

덕분에, 동료,이 위대하다! CustomTypefaceSpan 클래스를 제공하는 것을 잊어 버렸지 만, 인터넷의 다른 곳에서 그것을 발견하고 그것을 내 프로젝트에 배치했습니다. 가능한 한 빨리 답변을 수락하겠습니다. –

+0

답변을 업데이트했습니다. –

관련 문제