Android:Textview无法取消绑定/ italcized

时间:2017-02-17 04:47:43

标签: android textview android-typeface

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

2 个答案:

答案 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);