2012-11-28 10 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