라떼는말이야
[Android] marginLeft 대신 marginStart를 사용해야 하는 이유 본문
개요
일반적인 디자인에서 marginLeft와 marginStart는 동일한 효과를 가진다.
마찬가지로 marginRight와 marginEnd는 동일한 효과를 가진다.
하지만 margin을 주고자 하는 컴포넌트가 textView나 editText와 같은 문자와 관련된 컴포넌트라면 이야기가 달라진다.
언어별 특성 차이로 인해 발생하는 불편을 최소화하기 위해Left대신 Start,Right대신 End를 사용해야 한다.
언어별 특징
대부분의 문자는 왼쪽에서 오른쪽으로 쓰고, 읽는다. 이를 LTR언어 라고 칭한다.
하지만 일부 언어(아랍어, 히브리어, 페르시아어, 우르두어 등)는 오른쪽 -> 왼쪽으로 쓰고, 읽는다. . 이를 RTL언어 라고 칭한다.
그림을 보면 이해가 갈 것이다.
영어와 같은 LTR언어에서는 marginLeft 와 marginStart가 같은 효과를 보인다. 둘 다 들여쓰기 효과를 낼 수 있다.
하지만 RTL언어에서는 marginLeft 를 주면 말 그대로 왼쪽에서 margin을 주기 때문에 소용이 없어진다. 대신 marginStart를 주면 텍스트가 시작하는 오른쪽에서 margin이 들어가게 된다.
즉, LTR언어에서 Start는 Left이고, RTL언어에서 Start는 Right가 된다.
사용법
안드로이드에서는 4.2(API 수준 17)부터 RTL 텍스트 미러링을 지원하기 시작했다.
안드로이드 4.2는 2012년에 등장한 것으로 현재 안드로이드 기기에서 대부분 지원한다고 생각하면 될 것 같다. build.gradle 파일을 확인해보면 targetSdkVersion이 17 이상으로 되어있는지 확인해보아야 한다.
또한 매니페스트에 Rtl를 사용하겠다고 설정되어야 한다.
<manifest ... >
...
<application ...
android:supportsRtl="true">
</application>
</manifest>
안드로이드 스튜디오에서 프로젝트를 생성하면 자동으로 해당 옵션이 들어갈 것이므로 따로 설정해 줄 필요는 없다.
어떤 컴포넌트가 RTL로 표시되었을 때 어떻게 나타나는지 확인하고 싶다면 해당 컴포넌트에 다음 속성을 주면 된다.
android:layoutDirection="rtl"
추가로
margin 뿐만 아니라 RTL언어를 대응하는 속성이 여럿 존재한다.
'안드로이드' 카테고리의 다른 글
[안드로이드 스튜디오] Login Activity 템플릿 살펴보기 (0) | 2022.01.11 |
---|---|
[Android] 실습으로 알아보는 프래그먼트 생명주기 : Android fragment lifecycle (0) | 2021.12.10 |
[Android] 실습으로 알아보는 액티비티 생명주기 : Android activity lifecycle (0) | 2021.12.09 |
안드로이드 NotificationChannel의 VibrationPattern 설정하기 (진동 패턴) with Kotlin (0) | 2021.11.05 |
[Android] Countdown Timer 예제 (0) | 2021.08.05 |
[Android] permission 권한 정리 (0) | 2021.08.03 |
[Kotlin] Room 사용법 (Android에서 로컬 데이터베이스 사용하기) (0) | 2021.07.27 |
[Android] 현재 고민 중인 문제 : 화면 갱신 문제 (해결) (0) | 2021.05.28 |