Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 对同一文本视图使用不同的字体,并使用HTL格式_Android_Html_Typeface - Fatal编程技术网

Android 对同一文本视图使用不同的字体,并使用HTL格式

Android 对同一文本视图使用不同的字体,并使用HTL格式,android,html,typeface,Android,Html,Typeface,我已经知道如何为我的TextView指定自定义字体。到目前为止,我的应用程序使用的是一种自定义字体,分为两个ttf文件。一个用于常规字符,另一个用于粗体字符 现在,我希望能够像使用Html.fromHtml()一样在一个文本视图中同时使用这两个选项。由于它可以使用系统字体,所以应该可以使用我自己的字体。目前,粗体字符是用普通字体和假粗体文字绘制的,因为文字绘制非常难看 有什么想法吗 如果您想在一个文本视图中使用多个自定义字体,请多谢: 使用以下代码:(我使用的是孟加拉语和泰米尔语字体) 结果是

我已经知道如何为我的TextView指定自定义字体。到目前为止,我的应用程序使用的是一种自定义字体,分为两个ttf文件。一个用于常规字符,另一个用于粗体字符

现在,我希望能够像使用Html.fromHtml()一样在一个文本视图中同时使用这两个选项。由于它可以使用系统字体,所以应该可以使用我自己的字体。目前,粗体字符是用普通字体和假粗体文字绘制的,因为文字绘制非常难看

有什么想法吗


如果您想在一个文本视图中使用多个自定义字体,请多谢:

使用以下代码:(我使用的是孟加拉语和泰米尔语字体)
结果是:


CustomTypefaceSpan类:

  TextView txt = (TextView) findViewById(R.id.custom_fonts);  
        txt.setTextSize(30);
        Typeface font = Typeface.createFromAsset(getAssets(), "Akshar.ttf");
        Typeface font2 = Typeface.createFromAsset(getAssets(), "bangla.ttf");   
        SpannableStringBuilder SS = new SpannableStringBuilder("আমারநல்வரவு");
        SS.setSpan (new CustomTypefaceSpan("", font2), 0, 4,Spanned.SPAN_EXCLUSIVE_INCLUSIVE);
        SS.setSpan (new CustomTypefaceSpan("", font), 4, 11,Spanned.SPAN_EXCLUSIVE_INCLUSIVE);
        txt.setText(SS);
package my.app;
import android.graphics.Paint;
import android.graphics.Typeface;
import android.text.TextPaint;
import android.text.style.TypefaceSpan;

public class CustomTypefaceSpan extends TypefaceSpan {

private final Typeface newType;

public CustomTypefaceSpan(String family, Typeface type) {
    super(family);
    newType = type;
}

@Override
public void updateDrawState(TextPaint ds) {
    applyCustomTypeFace(ds, newType);
}

@Override
public void updateMeasureState(TextPaint paint) {
    applyCustomTypeFace(paint, newType);
}

private static void applyCustomTypeFace(Paint paint, Typeface tf) {
    int oldStyle;
    Typeface old = paint.getTypeface();
    if (old == null) {
        oldStyle = 0;
    } else {
        oldStyle = old.getStyle();
    }

    int fake = oldStyle & ~tf.getStyle();
    if ((fake & Typeface.BOLD) != 0) {
        paint.setFakeBoldText(true);
    }

    if ((fake & Typeface.ITALIC) != 0) {
        paint.setTextSkewX(-0.25f);
    }

    paint.setTypeface(tf);
}
}