2011-06-16 60 views
13

我有一個button使用Android小部件創建。我想將按鈕文本的字體設置爲Helv Neue 67 Med Cond。如何獲取此字體並將其設置爲android佈局文件中的按鈕文本?在Android中設置按鈕文本字體

回答

13

首先,你必須把資產的文件夾中的ttf文件,然後你可以用下面的代碼來設置自定義字體中的TextView,相同的方式可以爲按鈕做:

TextView txt = (TextView) findViewById(R.id.custom_font); 
Typeface font = Typeface.createFromAsset(getAssets(), "Helv Neue 67 Med Cond.ttf"); 
txt.setTypeface(font); 
1

您可以使用:

android:typeface="yourfont" 
+0

是的。但我想要Helv Neue 67 Med Cond字體。我怎樣才能得到這種字體? – Ajn 2011-06-16 13:20:01

+0

不適用於自定義字體;擴展每個元素或查看使用自定義佈局inflater。 – clwhisk 2015-04-22 16:27:09

0

您必須下載Helv Neue 67 Med Cond字體並將其存儲在資產文件夾中。讓下載的字體是myfont.ttf

使用下面的代碼設置字體

Typeface tf = Typeface.createFromAsset(getAssets(), "myfont.ttf"); 
     TextView TextViewWelcome = (TextView)findViewById(R.id.textViewWelcome); 
     TextViewWelcome.setTypeface(tf); 

感謝 迪帕克

2

的Android自帶的3種字體(Sans, Serif, Monospace)可使用android:typeface=」FONT_NAME」被accesed。

對於使用自定義字體,你應該使用類似的代碼

TextView txt = (TextView) findViewById(R.id.custom_font); 
    Typeface typeface = Typeface.createFromAsset(getAssets(), "Helv Neue 67 Med Cond.ttf"); 
    txt.setTypeface(typeface); 

一些類似的問題是Custom Fonts in AndroidAndroid - Using Custom Font

25

我猜你可能已經找到了答案,但如果沒有(和其他開發者),你可以像下面這樣做:

1.您想將「Helv Neue 67 Med Cond.ttf」保存到assets文件夾中。 然後

對於TextView的

TextView txt = (TextView) findViewById(R.id.custom_font); 
    Typeface typeface = Typeface.createFromAsset(getAssets(), "Helv Neue 67 Med Cond.ttf"); 
    txt.setTypeface(typeface); 

對於按鈕

Button n=(Button) findViewById(R.id.button1); 
    Typeface typeface = Typeface.createFromAsset(getAssets(), "Helv Neue 67 Med Cond.ttf"); 
    n.setText("show"); 
    n.setTypeface(typeface); 
2

如果您打算添加相同的字體的幾個按鈕,我建議你去所有的方式和實施小類按鈕:

public class ButtonPlus extends Button { 

    public ButtonPlus(Context context) { 
     super(context); 
     applyCustomFont(context); 
    } 

    public ButtonPlus(Context context, AttributeSet attrs) { 
     super(context, attrs); 
     applyCustomFont(context); 
    } 

    public ButtonPlus(Context context, AttributeSet attrs, int defStyle) { 
     super(context, attrs, defStyle); 
     applyCustomFont(context); 
    } 

    private void applyCustomFont(Context context) { 
      Typeface customFont = FontCache.getTypeface("fonts/candy.ttf", context); 
      setTypeface(customFont); 
     } 
    } 

而這裏的FontCache減少對舊設備的內存使用情況:

public class FontCache { 

    private static Hashtable<String, Typeface> fontCache = new Hashtable<>(); 

    public static Typeface getTypeface(String name, Context context) { 
     Typeface tf = fontCache.get(name); 
     if(tf == null) { 
      try { 
       tf = Typeface.createFromAsset(context.getAssets(), name); 
      } 
      catch (Exception e) { 
       return null; 
      } 
      fontCache.put(name, tf); 
     } 
     return tf; 
    } 
} 

最後在佈局的例子使用:

<com.my.package.buttons.ButtonPlus 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="@string/button_sometext"/> 

這可能看起來像一個可怕的很多工作,但你一旦你有幾把你想要改變字體的按鈕和文本框,就會感謝我。

你也可以在GitHub看到這個tutorial和一個例子。