我有一个应用程序,最低API级别是14。我是否正确地认为所有兼容的设备都应该默认安装Roboto字体?如果我将textView字体设置为Roboto或Roboto Light,则似乎会默认使用普通的sans字体。
有没有一种方法可以在不包含Roboto字体作为资源的情况下使用Roboto?
我有一个应用程序,最低API级别是14。我是否正确地认为所有兼容的设备都应该默认安装Roboto字体?如果我将textView字体设置为Roboto或Roboto Light,则似乎会默认使用普通的sans字体。
有没有一种方法可以在不包含Roboto字体作为资源的情况下使用Roboto?
有没有一种方法可以在不作为资产包含Roboto字体的情况下使用Roboto?
对于API 11<,没有其他方法可以做到这一点。
我通常会为机器人字体创建自定义TextView:
public class TextView_Roboto extends TextView {
public TextView_Roboto(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
createFont();
}
public TextView_Roboto(Context context, AttributeSet attrs) {
super(context, attrs);
createFont();
}
public TextView_Roboto(Context context) {
super(context);
createFont();
}
public void createFont() {
Typeface font = Typeface.createFromAsset(getContext().getAssets(), "robo_font.ttf");
setTypeface(font);
}
}
现在您可以像这样在您的布局中使用它:
<com.my.package.TextView_Roboto>
android:layout_width="..."
android:layout_height="..."
[...]
</com.my.package.TextView_Roboto>
当然,您可以创建一个TextView布局。一个用于Pre HC,一个用于HC及以上版本(您需要利用layout和layout-v11文件夹)。现在,您可以使用<include>
标签将TextView包含在您的布局中。您只需要这样使用:
if (android.os.Build.VERSION.SDK_INT >= 11){
TextView txt = (TextView) findViewById(R.id.myTxtView);
}
else{
TextView_Roboto txt = (TextView_Roboto) findViewById(R.id.myTxtView);
}
编辑:
您可以像这样在 Android 4.1+ 中直接使用 Roboto:
android:fontFamily="sans-serif" // roboto regular
android:fontFamily="sans-serif-light" // roboto light
android:fontFamily="sans-serif-condensed" // roboto condensed