Удалить флаг Paint в Android
мой код выглядит так:
TextView task_text = (TextView) view.findViewById(R.id.task_text);
task_text.setPaintFlags( task_text.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG);
Это приводит к пробивающего эффекта на тексте. Однако я хотел бы знать, как удалить флаг после установки и как определить, что флаг установлен.
Я понимаю, что это побитовая операция, но я пробовал оба ~ и - оператора, ни один не работает.
5 ответов
снять флаг, это должно работать:
task_text.setPaintFlags( task_text.getPaintFlags() & (~ Paint.STRIKE_THRU_TEXT_FLAG));
что означает установить все установленные флаги, за исключением Paint.STRIKE_THRU_TEXT_FLAG
.
чтобы проверить, установлен ли флаг (Edit: на мгновение я забыл, что это java...):
if ((task_text.getPaintFlags() & Paint.STRIKE_THRU_TEXT_FLAG) > 0)
использовать эксклюзивный или оператор ^
вместо |
С &(~)
код:
// 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));
проверьте, установлен ли флаг в настоящее время:
if((task_text.getPaintFlags() & Paint.STRIKE_THRU_TEXT_FLAG) == Paint.STRIKE_THRU_TEXT_FLAG)
|--------------------------------------------------|
| / Подчеркивание с помощью textView:
|--------------------------------------------------|
|*| Добавить Подчеркивание :
txtVyuVar.setPaintFlags(txtVyuVar.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG);
|*| Удалить Подчеркивание :
txtVyuVar.setPaintFlags(txtVyuVar.getPaintFlags() ^ Paint.UNDERLINE_TEXT_FLAG);
|*| Проверка Подчеркнуть :
if((txtVyuVar.getPaintFlags() & Paint.UNDERLINE_TEXT_FLAG) == Paint.UNDERLINE_TEXT_FLAG)
{
// Codo Todo
}
|*| Тумблер Подчеркнуть :
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);
}
на мой взгляд, просто установите флаг по умолчанию-лучший выбор. В противном случае текст будет выглядеть неровным. Флаг по умолчанию в TextView (EditText расширяет TextView) -
Paint.ANTI_ALIAS_FLAG
и установить новый paintflag заменит предыдущий. Я сделал тест, чтобы проверить его. Итак, вот так:
task_text.setPaintFlags(Paint.ANTI_ALIAS_FLAG);