2013-07-28 2 views
1

Я пытаюсь применить стиль пользовательского шрифта для моего app..I знать:Есть ли способ, чтобы установить стиль шрифта для всего приложения

Typeface tf = Typeface.createFromAsset(getAssets(),"font.ttf"); 
text.setTypeface(tf); 

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

есть ли «ужин» способ применения специального шрифта для всего приложения?

ответ

0

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

Смотрите этот ответ: Android: Want to set custom fonts for whole application not runtime

Пользовательского ActionBar Styling

ActionBar Tabs

ActionBar Title

+0

Спасибо за ваш ответ. Я видел вашу ссылку, прежде чем задавать свой вопрос. Хорошо ... Как установить шрифт вкладки панели действий? – deeplop

+0

Вы должны добавить пользовательский текстовый вид на вкладки: http://stackoverflow.com/a/14681975/1926391 – Nipper

+0

извините, я не использую панель действий Шерлока – deeplop

0

Там нет никакого способа, чтобы установить все приложения начертание шрифта, но если вы ищете более общее программное решение, я создал статический класс, который можно использовать для установки Typeface для всего представления (Activity UI). Обратите внимание, что я работаю с Mono (C#), но вы можете легко реализовать его с помощью Java.

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

public static class AndroidTypefaceUtility 
{ 
    static AndroidTypefaceUtility() 
    { 
    } 
    //Refer to the code block beneath this one, to see how to create a typeface. 
    public static void SetTypefaceOfView(View view, Typeface customTypeface) 
    { 
    if (customTypeface != null && view != null) 
    { 
      try 
      { 
       if (view is TextView) 
        (view as TextView).Typeface = customTypeface; 
       else if (view is Button) 
        (view as Button).Typeface = customTypeface; 
       else if (view is EditText) 
        (view as EditText).Typeface = customTypeface; 
       else if (view is ViewGroup) 
        SetTypefaceOfViewGroup((view as ViewGroup), customTypeface); 
       else 
        Console.Error.WriteLine("AndroidTypefaceUtility: {0} is type of {1} and does not have a typeface property", view.Id, typeof(View)); 
       } 
       catch (Exception ex) 
       { 
        Console.Error.WriteLine("AndroidTypefaceUtility threw:\n{0}\n{1}", ex.GetType(), ex.StackTrace); 
        throw ex; 
       } 
      } 
      else 
      { 
       Console.Error.WriteLine("AndroidTypefaceUtility: customTypeface/view parameter should not be null"); 
      } 
     } 

     public static void SetTypefaceOfViewGroup(ViewGroup layout, Typeface customTypeface) 
     { 
      if (customTypeface != null && layout != null) 
      { 
       for (int i = 0; i < layout.ChildCount; i++) 
       { 
        SetTypefaceOfView(layout.GetChildAt(i), customTypeface); 
       } 
      } 
      else 
      { 
       Console.Error.WriteLine("AndroidTypefaceUtility: customTypeface/layout parameter should not be null"); 
      } 
     } 

    } 

В вашей деятельности вам необходимо создать объект Typeface. Я создаю шахту в OnCreate(), используя файл .ttf, расположенный в моем каталоге Resources/Assets /. Убедитесь, что файл отмечен как «Атрибут Android» в его свойствах.

protected override void OnCreate(Bundle bundle) 
{    
    ... 
    LinearLayout rootLayout = (LinearLayout)FindViewById<LinearLayout>(Resource.Id.signInView_LinearLayout); 
    Typeface allerTypeface = Typeface.CreateFromAsset(base.Assets,"Aller_Rg.ttf"); 
    AndroidTypefaceUtility.SetTypefaceOfViewGroup(rootLayout, allerTypeface); 
} 
Смежные вопросы