2014-12-22 5 views
2

작업 표시 줄 탭에서 글꼴을 변경하려고하지만 작동하지 않습니다. 나는 이미 몇 가지를 시도했고이 하나가 최상의 옵션처럼 보였다. 불행히도 이것은 아무것도하지 않으며 글꼴은 동일하게 유지됩니다. 또한 Typeface는 코드의 다른 부분에서 사용하기 때문에 ok입니다. 이것이 내가 가진 것입니다 :작업 표시 줄에 사용자 정의 글꼴 사용

actionBar = getActionBar(); 
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); 

    SpannableString s = new SpannableString("My Tab"); 
    Typeface tf = Typeface.createFromAsset(getAssets(), "my_font.ttf"); 
    s.setSpan(tf, 0, s.length(), 
      Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 

    ActionBar.Tab myTab = actionBar.newTab(); 
    myTab.setText(s); 
    myTab.setTabListener(this); 

    actionBar.addTab(myTab); 

누구나 어떻게 할 수 있는지 알고 계십니까?

미리 감사드립니다.

답변

-1

프로그래밍 방식으로 처리해야합니까? 그렇지 않으면 내가 그러나 그것은 비록 빌드 타겟 등이 여기에 샘플입니다 따라 다르게 작동하는 것으로 나타났습니다, 그것을 위해 테마를 사용할 수 있습니다

<style name="AppTheme" parent="Theme.AppCompat.Light"> 
    <item name="android:actionBarStyle">@style/WorkoutLogActionBar</item> 
    <item name="colorPrimary">#ffffa220</item> 
</style> 

<style name="WorkoutLogActionBar" 
    parent="@android:style/Widget.Holo.Light.ActionBar.Solid.Inverse"> 
    <item name="android:titleTextStyle">@style/WorkoutLogActionBarTitleText</item> 
    <item name="android:icon">@android:color/transparent</item> 
</style> 

<style name="WorkoutLogActionBarTitleText"> 
    <item name="android:textColor">@android:color/white</item> 
    <item name="android:textSize">@dimen/title_text_size</item> 
    <item name="android:fontFamily">"sans-serif-light"</item> 
</style> 

이, 내 액션 바에서 제목 글꼴을 변경하지만이 있는 것으로 보입니다 :

희망이 빌드 타겟 버전에서 작동하며 도움이됩니다.

감사합니다.

+1

:

UPDATE 은 그냥 TextView의 코드를 삽입. – Nuno

+0

내 생각에 사용자 정의보기를 사용해 보셨습니까? http://developer.android.com/reference/android/app/ActionBar.Tab.html#setCustomView(android.view.View) 및 http://stackoverflow.com/questions/17893664/how-to-customize- 액션 바 바 탭 – nenne

+0

예, 그런 글꼴을 바꿀 수는 있지만 내가 한 모든 다른 커스터마이징을 잃을 것입니다. – Nuno

1

당신은 이제

<style name="AppTheme" parent="AppBaseTheme"> 
     <item name="android:actionBarTabTextStyle">@style/TabTextStyle</item> 
     <item name="actionBarTabTextStyle">@style/TabTextStyle</item> 
    </style> 
+0

맞춤 글꼴을 사용하고 싶기 때문에 이렇게 할 수 없습니다. – Nuno

0

이 같은 tabTextStyle을 설정하는 것이

<style name="TabTextStyle" parent="@style/Widget.AppCompat.ActionBar.TabText"> 
     <item name="android:textColor">@android:color/holo_blue_bright</item> 
     <item name="android:textSize">14sp</item> 
     <item name="android:textStyle">bold</item> 
     <item name="android:fontFamily">sans-serif-light</item> 
    </style> 

같은 새로운 탭 텍스트 스타일을 정의하여 탭의 텍스트 스타일을 사용자 정의 할 수 있습니다하는 것은 정의를 사용하는 코드입니다 작업 표시 줄의 텍스트 :

 ActionBar act = ((ActionBarActivity) getActivity()).getSupportActionBar(); 

     LayoutInflater inflator = LayoutInflater.from(getActivity()); 
     View v = inflator.inflate(R.layout.action_bar_custom, null); 

     ((MyCustomTextView) v.findViewById(R.id.title_text)).setText(title); 
     act.setCustomView(v); 

이 경우 Google은 사용자 정의 TextView을 ormal 레이아웃 우리가 ActionBar에서보기로 설정할 팽창, 레이아웃은 다음과 같이 표시됩니다

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="vertical" > 

<ch.nuewsli.widget.TestoTextView 
    android:id="@+id/title_text" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:textColor="@color/WHITE_TEXTCOLOR" 
    android:textSize="18sp" 
    android:lines="1" 
    android:gravity="center_vertical"/> 

</LinearLayout> 

를 당신이해야하는 XML에서 ActionBar 글꼴 (만 폰트 패밀리를) 변경할 수 없습니다 때문에 TextView을 확장하고 글꼴을 사용하고 글꼴을 ActionBar에 넣으려면 글꼴을 assets 폴더로 복사해야합니다. 아래 코드는 android:textStyle 속성에 지정된 TextView의 스타일을 bold과 다른 스타일로 구별 할 수 있습니다. 내가 그렇지 않으면 당신은 사용자 정의 글꼴을 사용할 수 없기 때문에 내가 필요가 있다고 생각

public MyTextView(Context context, AttributeSet attrs, int defStyle) { 
    this(context, attrs); 
    } 

    public MyTextView(Context context) { 
    super(context); 

    this.mContext = context; 
    init(); 
} 

public void init() { 

    Typeface typeface = getTypeface(); 

    if(typeface != null) 
     style = typeface.getStyle(); 

    if(style != Typeface.BOLD) { 
     typeface = Typeface.createFromAsset(mContext.getAssets(), "My-Font-Regular.ttf"); 
    }else { 
     typeface = Typeface.createFromAsset(mContext.getAssets(), "My-Font-Bold.ttf"); 
    } 
    this.setTypeface(typeface); 
} 
+0

사용자 정의보기 클래스를 보여줄 수 있습니까? – Nuno

+0

@Nuno 내 편집을보세요. – TheRedFox

관련 문제