2011-04-12 54 views

回答

145

您需要在項目的assets文件夾下創建字體文件夾,並將TTF放入其中。然後在您的活動onCreate()

TextView myTextView=(TextView)findViewById(R.id.textBox); 
Typeface typeFace=Typeface.createFromAsset(getAssets(),"fonts/mytruetypefont.ttf"); 
myTextView.setTypeface(typeFace); 

請注意,並非所有的TTF都能正常工作。在我進行實驗的時候,它只適用於一個子集(在Windows上是名字用小寫字母寫的)。

+0

謝謝zelimir我明白了。 – bHaRaTh 2011-04-12 11:26:11

+0

不客氣。 – Zelimir 2011-04-12 11:27:50

+6

這個資產文件夾在哪裏?我使用Android的工作室,我可以在src/ – intoTHEwild 2013-08-17 20:01:06

9

在資產文件夾中創建一個名爲fonts的文件夾,並從下面的鏈接添加片段。

Typeface tf = Typeface.createFromAsset(getApplicationContext().getAssets(),"fonts/fontname.ttf"); 
textview.setTypeface(tf); 
+0

謝謝Janardhan謝謝,我明白了。 – bHaRaTh 2011-04-12 11:25:55

5

完成此操作最簡單的方法是將所需的字體 與您的應用程序打包在一起。爲此,只需在 項目的根目錄下創建一個資產/文件夾,然後將您的字體(以TrueType或TTF格式)放入 的資產中。例如,您可能會創建資產/字體/並將您的TTF文件放在那裏。

然後,您需要告訴您的小部件使用該字體。不幸的是, 您不能再使用佈局XML,因爲XML並不知道 關於您可能隱藏作爲應用程序資產的任何字體。 取而代之,您需要通過調用 Typeface.createFromAsset(getAssets(),「fonts/HandmadeTypewriter.ttf」), 然後採用創建的Typeface對象並通過setTypeface將其傳遞到您的 TextView來更改Java代碼)。

對於這裏更多的參考是在那裏我得到這個教程:

http://www.androidguys.com/2008/08/18/fun-with-fonts/

7

要實現你需要使用字樣與樣品經過下面的

Typeface typeface = Typeface.createFromAsset(getAssets(), "fonts/Roboto/Roboto-Regular.ttf"); 
for (View view : allViews) 
{ 
    if (view instanceof TextView) 
    { 
     TextView textView = (TextView) view; 
     textView.setTypeface(typeface); 
     } 
    } 
} 
+1

爲'allViews'您使用通過佈局必須循環'getChildCount()' 所以你可以只用一個簡單的for循環更換的foreach。 – ConquerorsHaki 2016-03-09 12:47:51

11

您可以使用自定義TextView整個應用程序與自定義字體在這裏是一個例子

public class MyTextView extends TextView { 

    Typeface normalTypeface = Typeface.createFromAsset(getContext().getAssets(), Constants.FONT_REGULAR); 
    Typeface boldTypeface = Typeface.createFromAsset(getContext().getAssets(), Constants.FONT_BOLD); 

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

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

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

    public void setTypeface(Typeface tf, int style) { 
     if (style == Typeface.BOLD) { 
      super.setTypeface(boldTypeface/*, -1*/); 
     } else { 
      super.setTypeface(normalTypeface/*, -1*/); 
     } 
    } 
} 
2

我推薦這個approach它將typeface中的自定義字體的名稱添加到styles.xml並將您的字體集合放入assets文件夾中,這非常好。

+0

非常好的方法,我建議把它引起注意。如果將來無法訪問鏈接,則可能是複製主代碼並在此處發佈的好主意。 – validcat 2016-08-25 15:05:13

1

除了上述答案之外,還有一點。 當使用片段內的字體,字體實例應該在onAttach方法(覆蓋)進行,如下所示:片段是前
有很短的時間跨度:

@Override 
public void onAttach(Activity activity){ 
    super.onAttach(activity); 
    Typeface tf = Typeface.createFromAsset(getApplicationContext().getAssets(),"fonts/fontname.ttf"); 
} 

原因附加到一項活動。如果在將片段附加到活動之前調用CreateFromAsset方法,則會發生錯誤。

相關問題