2012-11-28 16 views
1

嗨,我使用一個自定義Typeface在我的應用程序下面的代碼:的Android定製字樣

public Typeface font; 
//Activity on create: 
font = Typeface.createFromAsset(getAssets(),"DINOT-Medium.otf"); 

TextView tv = (TextView)vi.findViewById(R.id.textView1); 
tv.setTypeface(font); 

問題是一段時間後它會車:文本可以不再閱讀與正方形可見。你知道爲什麼發生這種情況嗎?它如何被修復? 謝謝

+0

該代碼似乎沒問題。嘗試使用不同的字體進行測試。我不知道什麼是otf,但你可以嘗試一下ttf。例如與此:http://www.microsoft.com/typography/fonts/font.aspx?FMID=1131 – Caner

+0

完全otf擴展導致的問題,必須是tf – vallllll

回答

1

在Mobiletuts +上有非常好的Android文本格式教程。快速提示:Customize Android Fonts

編輯:現在測試它自己。這是解決方案。您可以使用稱爲字體的子文件夾,但它必須放在資源文件夾而不是res文件夾中。所以

assets/fonts 

還要確保字體結尾我的意思是字體文件本身的結尾都是小寫。換句話說,它不應該被myFont.TTF但myFont.ttf

+0

感謝實際上問題是,擴展是otf,而不是TTF ...我已經在這裏轉換它:http://www.convertissez.fr/font-converter.php,現在它似乎已被修復 – vallllll

3

創建自定義TextView這樣的:

public class DINOTMediumTextView extends TextView { 

    public DINOTMediumTextView(Context context) { 
     super(context); 
     setCustomFont(context); 
    } 

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

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

    private void setCustomFont(Context context) { 
     Typeface tf = Typeface.createFromAsset(context.getAssets(), "fonts/DINOT-Medium.otf"); 
     setTypeface(tf); 
    } 
} 

把字體的文件中assets/fonts/創建資產的文件夾中的文件夾

,然後在你的佈局XML:

<com.yourapp.views.DINOTMediumTextView 
    android:id="blabla" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" /> 

com.yourapp.views是包含您的DINOTMediumTextView類的包的名稱。

+0

謝謝這是一個好主意,創建自定義視圖,但在我的case我必須創建自定義的TextView,EditText和Button ....問題似乎是我的情況下的擴展,雖然 – vallllll

+0

因此創建三個自定義視圖,每種類型的視圖,然後你可以在你的xml佈局中使用它們你不需要每次指定typeFace :) – Houcine