TextView显示在一个活动中,用户转到另一个活动以编辑文本属性,如颜色,大小,粗体,斜体和下划线。当用户选择使文本变为粗体,斜体或bold_italic时,它可以正常工作。如果用户取消选中该复选框,则TextView不会恢复正常。它可以在样式之间切换(即,如果我检查粗体,然后取消选中粗体并检查斜体TextView将是斜体,而不是粗体)但它不能具有正常的TypeFace。
我已经搜索过了,我发现的所有内容都说使用带有Typeface.NORMAL的setTypeface方法应该可以正常工作但是它无效。
我很感激帮助解决这个问题。相关代码如下。谢谢!
TextView mDisplayMessage = (TextView) findViewById(R.id.message);
mDisplayMessage.setTypeface(mDisplayMessage.getTypeface(), Typeface.NORMAL);
//TODO: Cannot return all the way back to normal. Remains bold/italic/bold_italic
if (mIsBold && mIsItalic) mDisplayMessage.setTypeface(mDisplayMessage.getTypeface(), Typeface.BOLD_ITALIC);
else if (mIsBold) mDisplayMessage.setTypeface(mDisplayMessage.getTypeface(), Typeface.BOLD);
else if (mIsItalic) mDisplayMessage.setTypeface(mDisplayMessage.getTypeface(), Typeface.ITALIC);
else mDisplayMessage.setTypeface(mDisplayMessage.getTypeface(), Typeface.NORMAL);
if (mIsUnderlined) {
mDisplayMessage.setPaintFlags(mDisplayMessage.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG);
} else {
mDisplayMessage.setPaintFlags(0);
}
答案 0 :(得分:2)
如果您不关心字体系列,可以使用
mDisplayMessage.setTypeface(Typeface.DEFAULT);
因为Typeface.DEFAULT
更改了字体系列(serif,sans-serif,monospace),但是下面的字体系列可以改变样式。
Typeface typeface = mDisplayMessage.getTypeface();
int style = Typeface.NORMAL;
if(mIsBold && mIsItalic) {
style = Typeface.BOLD_ITALIC;
} else if(mIsBold) {
style = Typeface.BOLD;
} else if(mIsItalic) {
style = Typeface.ITALIC;
}
Typeface newTypeface = Typeface.create(typeface, style);
mDisplayMessage.setTypeface(newTypeface);
答案 1 :(得分:1)
试试这个,
mDisplayMessage.setTypeface(Typeface.DEFAULT);
OR
mDisplayMessage.setTypeface(null, Typeface.NORMAL);