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);
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);
참고 URL : https://stackoverflow.com/questions/6796809/remove-a-paint-flag-in-android
'ProgramingTip' 카테고리의 다른 글
find 및 sed를 사용하여 재귀 적으로 파일 이름 (0) | 2020.10.13 |
---|---|
NuGet 업그레이드 문제 (0) | 2020.10.13 |
브라우저의 디버거 자체에서 동적으로로드 JavaScript (jQuery 사용)를 사용하는 방법은 무엇입니까? (0) | 2020.10.13 |
Android가 선택한 라디오 버튼에서 값을 가져 오기 (0) | 2020.10.13 |
Android : LinearLayout 내의 모든 요소를 동일한 크기로 만드는 방법은 무엇입니까? (0) | 2020.10.13 |