내 코드는 다음과 같습니다.
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);
답변
Kotlin에서
task_text.paintFlags = task_text.paintFlags and Paint.STRIKE_THRU_TEXT_FLAG.inv()
답변
사용 배타적 논리합 연산자 ^
대신 |
과 &(~)
조합 :
// 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
그리고 새 페인트 플래그를 설정하면 이전 페인트 플래그가 대체됩니다. 나는 그것을 확인하기 위해 테스트를했다. 그래서 다음과 같이 :
task_text.setPaintFlags(Paint.ANTI_ALIAS_FLAG);