为了账号安全,请及时绑定邮箱和手机立即绑定

Android中的自定义字体

/ 猿问

Android中的自定义字体

智慧大石 2019-12-27 10:05:03

我已经阅读了一些文章并在Google上进行了搜索,但是我没有这样做。

我的问题是关于字体。

在Android中,“ "android:typeface"Normal”,“ Sans”,“ Serif”,“ Monospace” 中只有4个属性。

那么,在应用程序中使用“ Verdana”该怎么办?

请建议我在Android应用程序中使用此字体的正确方法。


查看完整描述

3 回答

?
湖上湖

这是一个简单的示例...在项目的根目录中创建一个名为的文件夹,assets/fonts/然后粘贴TTF字体文件(在本例中为Verdana.ttf)。然后,如果您想将该字体应用于TextView,请执行以下操作:


import android.graphics.Typeface;


public class FontSampler extends Activity {

  @Override

  public void onCreate(Bundle icicle) {

    super.onCreate(icicle);

    setContentView(R.layout.main);


    TextView tv=(TextView)findViewById(R.id.custom);

    Typeface face=Typeface.createFromAsset(getAssets(),

                                          "fonts/Verdana.ttf");


    tv.setTypeface(face);

  }

}

此示例摘自ComonsWare书(由Mark Murphy撰写)。您可以从GitHub下载完整示例。


查看完整回答
反对 2019-12-27
?
哔哔one

您可以在https://github.com/neopixl/PixlUI上使用PixlUI


导入他们的.jar并将其用于XML


 <com.neopixl.pixlui.components.textview.TextView

    android:id="@+id/textView1"

    android:layout_width="wrap_content"

    android:layout_height="wrap_content"

    android:text="@string/hello_world"

    pixlui:typeface="GearedSlab.ttf" />


查看完整回答
反对 2019-12-27
?
一只斗牛犬

好!!

这个问题已经很老了,但是如果有人(2015年)正在寻找有关如何通过xml代码将自定义字体应用于所有Textview的答案,请直接参见以下内容:


首先:

我们需要在您的应用目录中的assets文件夹内添加自定义字体:

.ttf或.otf都适用于Android


第二:

创建Class CustomTextView,它扩展了TextView,如下所示:


public class CustomTextView extends TextView {


public CustomTextView(Context context) {

    super(context);

   }


public CustomTextView(Context context, AttributeSet attrs, int defStyleAttr)   {

    super(context, attrs, defStyleAttr);

   }


public CustomTextView(Context context, AttributeSet attrs) {

    super(context, attrs);

   }


@Override

public void setTypeface(Typeface tf) {

    super.setTypeface(FontCache.getFont(getContext(),"fonts/<font_name>"));

   }

 }

第三:

在CustomTextView的setTypeface()方法中使用FontCache类,目的是使用HashMap进行基本的字体缓存:


public class FontCache {


private static Map<String,Typeface> fontMap = new HashMap<String,Typeface>();


public static Typeface getFont(Context context,String fontname){

    if(fontMap.containsKey(fontname)){

        return fontMap.get(fontname);

       }

    else{

        Typeface tf = Typeface.createFromAsset(context.getAssets(),fontname);

        fontMap.put(fontname,tf);

        return tf;

      }

    }

}

第四: [最后一步]现在要做的就是在需要自定义字体textview的地方直接在XML文件中使用CustomTextView:


<<package_name>.CustomTextView

    android:layout_width="wrap_content"

    android:layout_height="wrap_content"

    android:text="Custom Font Text"

    android:textSize ="18sp"

    android:textAppearance="?android:textAppearanceSmall"

    android:id="@+id/custom_txt"

   />

抱歉,如果此消息已发布在SO的某个位置。只是想分享一下是否有帮助!!


查看完整回答
反对 2019-12-27

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信