在运行时修改字体

时间:2012-10-15 07:19:48

标签: android fonts

有没有办法在运行时为android修改字体或组合两个字体文件。我需要为字体添加一个字符支持。

因为,如果字体文件中不存在字符,则设备会显示该字符的正方形。

1 个答案:

答案 0 :(得分:1)

如果您知道哪些字符会给您带来麻烦,那么您可能想尝试一下:

  1. 找到这些字符的位置,让它们为i,j,k(依此类推),让N为完整字符串的大小。
  2. 然后执行以下操作:

    String yourString = "Some Text Here"; // this is you string
    Spannable spannable = new SpannableString(yourString);
    // you can also iterate, instead of next few steps
    // typeface1 and typeface2 are your two different font styles
    spannable.setSpan(typeface1, 0, i-1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
    spannable.setSpan(typeface2, i, i+1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
    spannable.setSpan(typeface1, i+1, j-1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
    spannable.setSpan(typeface2, j, j+1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
    spannable.setSpan(typeface1, j+1, k-1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 
    spannable.setSpan(typeface2, k, k+1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); // and so on
    spannable.setSpan(typeface1, k+1, N, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 
    textview1.setText(spannable); // this is your textview and setting of font
    
  3. 或者您可以创建自己的客户字体并将其应用于您想要的视图。在那里你可以应用第一个字体forall字符,除了它无法处理的字符。对于那些,你可以申请第二个。我不知道那有多可行。我会尝试一下让你知道。

    看看这是否有用。