2012-02-17 2 views
0

Я обманывал пользовательские шрифты в Android. Я знаю, как импортировать шрифт и иметь текстовое представление, установленное для этого шрифта. Я заметил, что когда у вас много текстовых элементов, это может стать довольно утомительным.Настройка шрифта для всего макета в android

Есть ли способ установить шрифт всего макета шрифта на определенную грань шрифта?

Заранее спасибо.

+1

См. Этот вопрос: http://stackoverflow.com/questions/2973270/using-a-custom-typeface-in-android – howettl

ответ

1

Что я сделал объявить свой собственный суб-класс TextView, где я поставил шрифт в конструкторе, как это:

public class MyTextView extends TextView { 

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


public MyTextView(Context context, AttributeSet attrs) { 
    super(context, attrs); 
    setTypeFace(); 
} 


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

public void setTypeFace() 
{ 
    this.setTypeface(StaticUtils.getDefaultFontNormal(getContext())); 
} 

} 

Тогда в моих макетах, если я использую полное имя, оно работает:

<ca.mycompany.mobile.ui.support.MyTextView 
     android:id="@+id/title_summaryreports" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:paddingBottom="10dip" 
      android:paddingTop="10dip" 
      android:text="@string/title_strategies" 
      android:textAppearance="?android:attr/textAppearanceLarge" 
      android:textStyle="bold" 
      android:textColor="#ff0000" /> 
0

Вы можете использовать этот метод: Просто передайте идентификатор и тип шрифта верхнего уровня для этого метода, и это позволит установить шрифт во весь макет.

public void setFont(ViewGroup group, Typeface lTypeface) 
{ 
    int count = group.getChildCount(); 
    View v; 
    for (int i = 0; i < count; i++) 
    { 
     v = group.getChildAt(i); 
     if (v instanceof TextView) 
     { 
      ((TextView) v).setTypeface(lTypeface); 
     } else if (v instanceof EditText) 
     { 
      ((EditText) v).setTypeface(lTypeface); 
     } else if (v instanceof Button) 
     { 
      ((Button) v).setTypeface(lTypeface); 
     } else if (v instanceof TextInputLayout) 
     { 
      ((TextInputLayout) v).setTypeface(lTypeface); 
     } else if (v instanceof ViewGroup) 
      setFont((ViewGroup) v, lTypeface); 
    } 
} 
Смежные вопросы