80 votes

Supprimer un drapeau de peinture dans Android

Mon code ressemble à ceci :

    TextView task_text = (TextView) view.findViewById(R.id.task_text);
    task_text.setPaintFlags( task_text.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG);

Cela fait apparaître un effet de biffure sur le texte. Cependant, j'aimerais savoir comment supprimer l'indicateur une fois qu'il est activé et comment détecter qu'il l'est.

Je comprends qu'il s'agit d'une opération par bit, mais j'ai essayé les opérateurs ~ et -, mais aucun ne fonctionne.

179voto

MByD Points 78505

Pour supprimer un drapeau, cela devrait fonctionner :

task_text.setPaintFlags( task_text.getPaintFlags() & (~ Paint.STRIKE_THRU_TEXT_FLAG));

Ce qui signifie que tous les drapeaux set sont activés, à l'exception de Paint.STRIKE_THRU_TEXT_FLAG .

Pour vérifier si un drapeau est activé (Edit : pendant un moment j'ai oublié que c'est java...) :

if ((task_text.getPaintFlags() & Paint.STRIKE_THRU_TEXT_FLAG) > 0)

29voto

siiiiiix Points 89

En Kotlin

task_text.paintFlags = task_text.paintFlags and Paint.STRIKE_THRU_TEXT_FLAG.inv()

27voto

arun-jamhub Points 21

Cela fonctionne aussi :

task_text.setPaintFlags(0);

9voto

XIII-th Points 3104

Utilice OU exclusif opérateur ^ au lieu de | con &(~) combinaison :

// setup STRIKE_THRU_TEXT_FLAG flag if current flags not contains it
task_text.setPaintFlags(task_text.getPaintFlags() ^ Paint.STRIKE_THRU_TEXT_FLAG));

// second call will remove STRIKE_THRU_TEXT_FLAG
task_text.setPaintFlags(task_text.getPaintFlags() ^ Paint.STRIKE_THRU_TEXT_FLAG));

Vérifie si l'indicateur de validité est en cours d'installation :

if((task_text.getPaintFlags() & Paint.STRIKE_THRU_TEXT_FLAG) == Paint.STRIKE_THRU_TEXT_FLAG)

6voto

Sujay U N Points 1688

|*| Ajouter le soulignement :

 txtVyuVar.setPaintFlags(txtVyuVar.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG);

|*| Supprimer le soulignement :

txtVyuVar.setPaintFlags(txtVyuVar.getPaintFlags() ^ Paint.UNDERLINE_TEXT_FLAG);

|*| Vérifier le soulignement :

if((txtVyuVar.getPaintFlags() & Paint.UNDERLINE_TEXT_FLAG) == Paint.UNDERLINE_TEXT_FLAG)
{
    // Codo Todo
}

|*| Toggle Underline :

if((txtVyuVar.getPaintFlags() & Paint.UNDERLINE_TEXT_FLAG) == Paint.UNDERLINE_TEXT_FLAG)
{
    txtVyuVar.setPaintFlags(txtVyuVar.getPaintFlags() ^ Paint.UNDERLINE_TEXT_FLAG);
}
else
{
    txtVyuVar.setPaintFlags(txtVyuVar.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG);
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X