在Android中删除一个油漆标志

我的代码如下所示:

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

这导致文字上出现罢工效果。 但是,我想知道如何删除一旦设置标志,以及如何检测标志设置。

我知道这是一个按位操作,但我已经尝试了〜和 – 运营商,都没有工作。

    要删除一个标志,这应该工作:

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

    这意味着设置所有设置的标志,除了Paint.STRIKE_THRU_TEXT_FLAG

    要检查是否设置了一个标志(编辑:一会儿我忘了它是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); } 

    在我看来,只要设置其默认标志是一个更好的select。 否则,文本将看起来锯齿状。 TextView中的默认标志(EditText扩展TextView)是

     Paint.ANTI_ALIAS_FLAG 

    并设置一个新的paintflag将取代以前的一个。 我已经做了一个testing来validation它。 所以,就像这样:

     task_text.setPaintFlags(Paint.ANTI_ALIAS_FLAG);