2017-02-17 3 views
1

mon application affiche un TextView dans une activité et passe à une autre activité pour modifier les propriétés du texte telles que la couleur, la taille, gras, italique et souligné. Lorsque l'utilisateur choisit de mettre le texte en gras, en italique ou en gras_italic, cela fonctionne. Si l'utilisateur désélectionne la case, TextView ne revient pas à la normale. Il peut changer entre les styles (c.-à-d. Si je coche le gras, alors décochez bold et cochez italique le TextView sera en italique, pas gras) mais il ne peut pas avoir un TypeFace normal. J'ai cherché autour et tout ce que j'ai trouvé dit que l'utilisation de la méthode setTypeface avec Typeface.NORMAL devrait fonctionner mais ce n'est pas le cas. J'apprécierais de l'aide pour résoudre ceci. Le code pertinent est ci-dessous. Je vous remercie!Android: Textview ne peut pas être unbolded/italcized

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

Répondre

1

Essayez ceci,

mDisplayMessage.setTypeface(Typeface.DEFAULT); 

OU

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

mDisplayMessage.setTypeface (Typeface.NORMAL); a produit une erreur de compilation mais mDisplayMessage.setTypeface (Typeface.DEFAULT); a fonctionné! Merci beaucoup! – Roc47HS

+0

Vérifier le code mis à jour – user2025187

2

Si vous ne se soucient pas de la famille de polices que vous pouvez utiliser

mDisplayMessage.setTypeface(Typeface.DEFAULT);

Parce que Typeface.DEFAULT changez la famille de police (serif, sans-serif, monospace), mais le ci-dessous peut garder la même famille de police avec le style changé.

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