2013-11-20 3 views
0

Я пытаюсь использовать Roboto Typeface для всего приложения. Создание объекта шрифта и его применение на всех необходимых полях требуются, но утомительно, так как количество полей выросло в findViewId() для каждого TextView, кнопка ухудшит производительность. Я пытаюсь настроить конфигурацию, поскольку большинство из них предлагается в Интернете, но я не могу использовать Roboto. я получаю «sans-serif-light» как не распознанный.Roboto шрифт для всего приложения

Пожалуйста, предложите какой метод следовать.

+0

Просто напоминание , Roboto может быть доступна на Android 4.0 и выше. Если вы хотите использовать «пользовательский шрифт», вы должны сделать это программно. – gian1200

+0

Я использую ICS; поэтому, только метод должен делать программно-зависимый ... Основываясь на количестве текстовых просмотров и кнопок, это довольно утомительная задача. – harshal

+0

Если ваша minSdkVersion является ICS (v.14), то, скорее всего, устройства имеют Roboto. Однако это не означает, что это будет шрифт по умолчанию. Говоря о производительности и сводя к минимуму использование памяти и процессора, я предлагаю использовать и повторно использовать статические методы (стиль Singleton) для загрузки шрифта из Assets, чтобы избежать дополнительных распределений. CTRL + C и CRTL + V тоже хорошие друзья: P – gian1200

ответ

0

Создать класс,

public class CustomTextView extends TextView { 
static Typeface Roboto_Bold = Typeface.createFromAsset(Global.mainActivity.getAssets(), "Roboto-Bold.ttf"); 
static Typeface Roboto_Regular = Typeface.createFromAsset(Global.mainActivity.getAssets(), "Roboto-Regular.ttf"); 

и добавьте ниже кода в конструкторах, используйте CustomTextView во всей заявке вместо TextView

try { 
    int style = getTypeface().getStyle(); 
    if (style == (Typeface.BOLD)) { 
     isBold = true; 
    } 
} catch (Exception e) { 
    e.printStackTrace(); 
} 
if (isBold) 
     this.setTypeface(Roboto_Bold); 
else 
     this.setTypeface(Roboto_Regular); 

----- обновляемой,

я недавно что пользовательский шрифт будет храниться в собственной памяти при огромном потреблении памяти. Таким образом, создание шрифта внутри пользовательского класса TextView будет в значительной степени заполнять основную память (в моем случае 300 мегабайт) зависит от количества экземпляров созданного TextView.

Поэтому лучше создать статический объект Typeface которого TextView относится, следовательно, уменьшает потребление памяти (20 Мб в моем случае)

если вы используете Гарнитуры более одного пользовательского вида рассмотрим глобальный статический Typeface

Смежные вопросы