2014-11-12 5 views
0

Я хочу использовать пользовательский шрифт в своем приложении. Это лучший способ предоставить шрифт для всего приложения. Я знаю, как назначить пользовательский шрифт одному TextView или Button.Изменить шрифт всего приложения

Можно ли упомянуть пользовательский шрифт в одном месте, например. в styles.xml, и шрифт будет применен ко всему приложению (каждый TextView, Button, EditText и вскоре).

+0

Вы можете создать свою собственную тему и применить ее к приложению в манифесте ''. Больше информации здесь: http://developer.android.com/guide/topics/ui/themes.html, но требуется слишком много времени :) – CaptainTeemo

+0

Возможный дубликат [Пользовательские шрифты и пользовательский текстовый просмотр на Android] (http: // stackoverflow .com/questions/8954484/custom-fonts-and-custom-textview-on-android) или [Добавить пользовательский шрифт для полного приложения для Android] (http://stackoverflow.com/questions/6926263/add-custom-font- for-full-android-application) – Selvin

ответ

0

использовать этот тип TextView в приложении

public class MyTextView extends TextView { 

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

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

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

public void init() { 
    Typeface tf = Typeface.createFromAsset(getContext().getAssets(), "font/chiller.ttf"); 
    setTypeface(tf ,1); 

} 

} 

также редактировать текст

public class CEditText extends EditText { 


private Context context; 
private AttributeSet attrs; 
private int defStyle; 

public CEditText(Context context) { 
    super(context); 
    this.context=context; 
    init(); 
} 

public CEditText(Context context, AttributeSet attrs) { 
     super(context, attrs); 
     this.context=context; 
     this.attrs=attrs; 
     init(); 
} 

public CEditText(Context context, AttributeSet attrs, int defStyle) { 
     super(context, attrs, defStyle); 
     this.context=context; 
     this.attrs=attrs; 
     this.defStyle=defStyle; 
     init(); 
} 

private void init() { 
     Typeface font=Typeface.createFromAsset(getContext().getAssets(), "fonts/myfont.ttf"); 
     this.setTypeface(font); 
} 
@Override 
public void setTypeface(Typeface tf, int style) { 
    tf=Typeface.createFromAsset(getContext().getAssets(), "fonts/myfont.ttf"); 
    super.setTypeface(tf, style); 
} 

@Override 
public void setTypeface(Typeface tf) { 
    tf=Typeface.createFromAsset(getContext().getAssets(), "fonts/myfont.ttf"); 
    super.setTypeface(tf); 
} 
+0

Кроме того, в макете xml-файла он должен быть загружен с помощью

+0

Я знаю этот подход, спасибо в любом случае. Как насчет кнопок и EditText? Должен ли я также создавать пользовательские EditText и кнопки? –

+0

да это называется представлением куста в андроиде, используя любой файл xml. –

0

Unfortunatly, андроид не предоставляет какой-либо метод, чтобы применить специальный шрифт для полного приложения в одном месте.

Тем не менее, вы можете создать свой CustomTextView, расширяющий TextView и CustomButton extends Button. В этом случае вы можете установить шрифт, создав FontInstance.

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