본문 바로가기

Android App/Tip

(3)
[Android/Tip] API 29에서 BottomSheet의 peek_height가 다르게 보이는 문제 해결하기(How to make same peek_height of BottomSheet on API 29) 문제 상황 peek_height를 설정한 BottomSheet가 AVD 상에서 잘 작동하는 것을 확인했으나, 실제 기기인 갤럭시 노트10(안드로이드 Q)에서는 BottomSheet가 다 보이는, 즉 peek_height 속성의 값이 적용되지 않는 문제가 있었다. 심지어 숨겨지지도 않았다. 해결 방법 안드로이드 Q에서부터 BottomSheet 제스처와 시스템 네비게이션 제스처와의 충돌을 방지하기 위해 GestureBottomInserts가 default behavior로 설정했기 때문이라고 한다. API29에서도 BottomSheet가 동일하게 동작하기 윈한다면 이를 무시하는 속성인 "gestureInsetBottomIgnored"를 trure로 설정하면 된다. XML과 프로그래밍 코드 상에서 모두 가능하..
[Android/Tip] Elevation으로 생긴 그림자 없애기(Remove elevation shadow) 문제 상황 어떤 View 위에 버튼을 위치시켜야 하는 화면이 있었다. "android:elevation" 속성으로 버튼을 위에 위치시키게 했지만, 자동으로 그림자도 생겼다. UI 디자인 상에서 그림자는 필요 없었기 때문에 버튼 아래 생기는 그림자를 없애고 싶었다. 해결 방법 XML 상에서 View의 속성으로 "android:outlineProvider"가 있다. 속성 값을 "none"으로 설정하면 그림자가 사라진다. *참고한 글 Remove elevation shadow without removing elevation itself Is there a way for AppBarLayout to no drop shadow and keep its elevation? stackoverflow.com
[Android/Tip] EditText 입력 텍스트 최대 길이 제한하기 (Limit maximum text length of EditText) XML에서 설정하기 (maxLength) EditText view의 속성으로 "android:maxLength"를 추가하여 원하는 길이의 값을 넣어주면 된다. 아래는 10글자로 제한한 EditText의 예제이다. 프로그래밍 방식으로 설정하기 (InputFilter) 하나의 EditText를 사용하는데, 입력 텍스트 최대 길이를 상황에 따라서 다르게 해야 할 때가 있다. 이 때는 Java나 Kotiln으로 프로그래밍하여 최대 길이를 설정하려고 할 것이다. 하지만 EditText 클래스에는 setMaxLength와 같이 입력 텍스트 최대 길이를 설정할 수 있는 함수를 제공하지 않는다. 이때 사용할 수 있는 것이 InputFilter이다. InputFilter.LengthFilter로 최대 길이를 설정하여 I..