if (study)/Android
MotionLayout이 적용되는 계층에 있는 모든 View엔 android:visibility 속성이 적용되지 않는다. Turns out this was my inexperience with how MotionLayout works. By default MotionLayout controls the visibility of all views within it. But you can opt out child views by using the app:visibilityMode="ignore" attribute and defining the view in the 해결방법은 크게 두가지 MotionLayout 내부에 새로운 ViewGroup 계층을 만들어서 그 하위 View로 집어넣기 또는 MotionScen..
상황 설명 스크롤뷰 안에 지도가 들어갈 경우, 지도를 상하 방향으로 움직일 때 스크롤뷰 쪽의 이벤트 우선순위가 높아서 지도는 안움직이고 화면 스크롤이 됨 예제는 네이버 지도를 사용했지만 네이버, 구글, 카카오 상관없이 적용 가능한 코드임 맵 클릭 이벤트를 구현할 인터페이스를 추가한다. interface OnMapTouchListener { fun onTouch() } 스크롤 뷰에대한 터치 이벤트를 재정의할 수 있도록 FrameLayout을 상속받은 TouchableWrapper 클래스를 추가한다. class TouchableWrapper @JvmOverloads constructor( context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = ..
난독화시 Line Number 정보가 보존되도록 proguard-rules.pro에 다음 설정을 추가한다. # Preserve annotations, line numbers, and source file names -keepattributes *Annotation*,SourceFile,LineNumberTable 참고 - https://yous.be/2014/05/15/how-to-configure-proguard-using-gradle/ gradle 설정
이탤릭체를 wrap_content와 함께 사용하면 글자의 오른쪽이 조금 잘려나간 것처럼 보인다. 이탤릭체를 사용하지 않았을 때와 동일한 크기의 사각형 범위에서 렌더링이 되기 때문이다. 때문에 패딩을 주든 마진을 주든 ) 나 1 처럼 가로 길이가 짧은 문자가 아닌 이상 끝부분이 조금 잘려나간 것처럼 보인다. 사실 자세히 들여다보지 않으면 크게 눈에 띄는건 아니지만 한번 자각하고 나면 매우 신경쓰인다. 해결하려면 아래처럼 문자열 끝에 공백 문자인 \u0020를 붙여주면 된다. android:text="@{item.name + `\u0020`}"
안드로이드에서 위젯을 만들때, 일반적인 앱을 만드는 것과 달리 레이아웃 구성에 제약이 상당히 많다. 사용할 수 있는 View와 Layout 타입이 한정되어 있고, 인식할 수 있는 제스처 타입도 두가지밖에 없다. 그래서 ConstraintLayout, RecyclerView, Custom View 등 평소 즐겨쓰던 치트키들이 모두 봉인된 상태로 개발을 해야한다. 이런건 뭐 번거로움을 감수하면 되지만... 위젯의 ImageView에서 벡터 포맷의 이미지를 사용하면 표시가 되지를 않는다. 열심히 삽질을 해봤으나 원인은 아직 모르겠다. png, jpg 타입의 이미지가 없고 벡터 타입을 꼭 사용해야 할 때... 비트맵으로 변환하는 야매 해결법을 메모해둔다. object VectorUtils { fun vector..