Удалить флаг краски в Android



мой код выглядит так:



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


это вызывает удар через эффект, чтобы появиться на тексте. Однако я хотел бы знать, как удалить флаг после установки и как определить, что флаг установлен.



Я понимаю, что это побитовая операция, но я пробовал и ~ и - операторы, ни одна из них не работает.

462   5  

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)

Это также работает:

task_text.setPaintFlags(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);

Comments

    Ничего не найдено.