2017-02-17 5 views
1

myアプリケーションは1つのアクティビティでTextViewを表示し、色、サイズ、太字、斜体、下線などテキストのプロパティを編集する別のアクティビティに進みます。ユーザーがテキストを太字、斜体、または太字にすることを選択すると、それは機能します。ユーザーがチェックボックスの選択を解除すると、TextViewは正常に戻りません。スタイル間を移動することができます(太字でチェックし、太字でチェックを外して太字ではなくイタリックにすると太字ではなくイタリックになります)が、通常のタイプフェイスを持つことはできません。私が検索したところ、Typeface.NORMALでsetTypefaceメソッドを使用すると動作するはずだが、そうではないことがわかった。私はこれを解決するためにいくつかの助けに感謝します。関連するコードは以下の通りです。ありがとうございました!Android:Textviewをアンボールド/イタリック体にすることはできません

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

答えて

1

あなたはので、あなたが

mDisplayMessage.setTypeface(Typeface.DEFAULT);

を使用することができ、フォントファミリを気にしなかった場合は、この、

mDisplayMessage.setTypeface(Typeface.DEFAULT); 

OR

mDisplayMessage.setTypeface(null, Typeface.NORMAL); 
+0

mDisplayMessage.setTypeface(Typeface.NORMAL); コンパイルエラーが発生しましたが、 mDisplayMessage.setTypeface(Typeface.DEFAULT); が機能しました。どうもありがとうございました! – Roc47HS

+0

更新されたコードを確認する – user2025187

2

をお試しくださいフォントファミリ(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); 
関連する問題