在fly spannable editText上更改字体

时间:2015-09-18 01:11:58

标签: android android-edittext spannable android-typeface

我有一个按钮:

if (id == R.id.italic) {
}

在该按钮内,我有一个spannable:

int startSelection = noteContent.getSelectionStart()
int endSelection = noteContent.getSelectionEnd();
Spannable spannable = noteContent.getText();

当用户点击斜体按钮时,我希望它以可斜跨的斜体制作所选文字。当用户单击同一可跨文本文本上的按钮时,我想使所选文本正常。

如果声明将抓取 spannable 的字体,以便它可以斜体或斜体。

另一种表达方式是谷歌在谷歌驱动器上实现的斜体功能。我想这样做。

示例二:

 If (spannable.getTypeface.equals(TypeFace.ITALIC) {


 } else {

 }

当然上面的if语句代码并不真实,但那就是我试图找出的

由于

1 个答案:

答案 0 :(得分:0)

使用此类,您可以使用spannable设置自定义字体或任何所需字体

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);
}

}

你可以像这样使用它

  Spannable wordtoSpan = new SpannableString(Text.getText().toString());
            int index = public_desc.getText().toString().indexOf("any string you want");   

            wordtoSpan.setSpan(new CustomTypefaceSpan("", Any type Face), index, text.getText().tostring().lenght, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
            text.setText(wordtoSpan);

编辑将此转换为if语句您可以为已检查状态创建布尔值默认为false并且当您单击该按钮然后反转该布尔值,然后如果选中等于true则设置spannable else设置另一种字体spannable

或者你可以使用它来获取字体是粗体还是斜体 用这个

    typefaceB.isBold() && typefaceA.isItalic()



     If (spannable.getTypeface.isItalic()) {


 } else {

 }