Mi código se ve así:
TextView task_text = (TextView) view.findViewById(R.id.task_text);
task_text.setPaintFlags( task_text.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG);
Esto hace que aparezca un efecto de tachado en el texto. Sin embargo, me gustaría saber cómo eliminar la bandera una vez configurada y cómo detectar que la bandera está configurada.
Entiendo que esta es una operación bit a bit, pero he probado los operadores ~ y -, ninguno funciona.
android
bitwise-operators
James
fuente
fuente
to remove a
, mientras que eliminará TODAS las banderas.Esto también funciona:
task_text.setPaintFlags(0);
fuente
En Kotlin
task_text.paintFlags = task_text.paintFlags and Paint.STRIKE_THRU_TEXT_FLAG.inv()
fuente
tvPhone.autoLinkMask = Linkify.ALL
, luegotvPhone.text = "1-800-12345"
, luegotvPhone.paintFlags = tvPhone.paintFlags and Paint.UNDERLINE_TEXT_FLAG.inv()
Utilice el operador OR exclusivo en
^
lugar de|
con la&(~)
combinación:// 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));
Compruebe si la bandera está configurada actualmente:
if((task_text.getPaintFlags() & Paint.STRIKE_THRU_TEXT_FLAG) == Paint.STRIKE_THRU_TEXT_FLAG)
fuente
| ------------------------------------------------- - |
| <*> | Subrayar con un textView:
| -------------------------------------------- ------ |
| * | Agregar subrayado:
txtVyuVar.setPaintFlags(txtVyuVar.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG);
| * | Eliminar subrayado:
txtVyuVar.setPaintFlags(txtVyuVar.getPaintFlags() ^ Paint.UNDERLINE_TEXT_FLAG);
| * | Comprobar subrayado:
if((txtVyuVar.getPaintFlags() & Paint.UNDERLINE_TEXT_FLAG) == Paint.UNDERLINE_TEXT_FLAG) { // Codo Todo }
| * | Alternar subrayado:
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); }
fuente
En mi opinión, simplemente establecer su bandera predeterminada es una mejor opción. De lo contrario, el texto se verá irregular. La bandera predeterminada en TextView (EditText extiende TextView) es
Paint.ANTI_ALIAS_FLAG
Y establecer una nueva bandera de pintura reemplazará a la anterior. He hecho una prueba para verificarlo. Así que, así:
task_text.setPaintFlags(Paint.ANTI_ALIAS_FLAG);
fuente