我有一个按钮:
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语句代码并不真实,但那就是我试图找出的
由于
答案 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 {
}