Установка шрифта для всего макета в Android - PullRequest
0 голосов
/ 17 февраля 2012

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

Можно ли в любом случае установить полный тип шрифта макетов для определенного шрифта?

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

Ответы [ 2 ]

1 голос
/ 17 февраля 2012

Я объявил свой собственный подкласс 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 голосов
/ 18 января 2017

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

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);
    }
}
...