레이아웃 위치
뷰의 도형은 직사각형이다. 뷰에는 위치가 있으며, 이는 한 쌍의 왼쪽 및 상단 좌표, 그리고 두 개의 치수가 너비와 높이를 나타내는 형식으로 표현된다. 위치와 치수의 단위는 픽셀이다.
뷰의 위치를 검색할 수 있다. getLeft() 및 getTop() 메서드를 호출하면 된다. 전자는 뷰를 나타내는 직사각형의 왼쪽, 즉 X 좌표를 반환합니다. 후자는 뷰를 나타내는 직사각형의 상단, 즉 Y 좌표를 반환한다. 이들 메서드는 둘 다 뷰의 상위 요소에 상대적인 뷰의 위치를 반환한다. 예를 들어, getLeft()가 20을 반환하는 경우 이는 뷰가 그 뷰의 직접적인 상위 요소의 왼쪽 가장자리에서 오른쪽으로 20픽셀 떨어진 곳에 있다는 뜻이다.
그 외에도 불필요한 계산을 피하기 위해 여러 가지 편의 메서드가 제공된다. 구체적으로 getRight() 및 getBottom()을 들 수 있다. 이들 메서드는 뷰를 나타내는 직사각형의 오른쪽과 하단 가장자리의 좌표를 반환한다. 예를 들어, getRight()를 호출하는 것은 getLeft() + getWidth() 계산과 비슷하다.
크기, 패딩 및 여백
뷰의 크기는 너비와 높이로 표현된다. 사실 하나의 뷰는 두 쌍의 너비 및 높이 값을 소유한다.
첫 번째 쌍을 측정된 너비 및 측정된 높이라고 한다. 이들 치수는 상위 요소 내에서 원하는 뷰 크기를 정의한다. 측정된 치수를 가져오려면 getMeasuredWidth() 및 getMeasuredHeight()를 호출하면 된다. 두 번째 쌍은 단순히 너비 및 높이라고 일컬으며, 때로는 그리기 너비 및 그리기 높이로 부를 때도 있다. 이러한 치수는 그리기 시간 및 레이아웃 후에 뷰가 화면에 표시되는 실제 크기를 정의한다. 이들 값은 측정된 너비 및 높이와 달라도 되지만 꼭 달라야 하는 것은 아니다. 너비와 높이를 가져오려면 getWidth() 및 getHeight()를 호출하면 된다. 뷰의 치수를 측정하기 위해 뷰는 자신의 패딩을 감안한다. 패딩은 뷰의 왼쪽, 상단, 오른쪽 및 하단 부분에 관해 픽셀로 표시된다. 패딩은 정해진 픽셀 수를 사용하여 뷰의 콘텐츠를 오프셋하는 데 쓰일 수도 있다. 예를 들어, 왼쪽 패딩을 2로 설정하면 뷰의 콘텐츠를 왼쪽 가장자리에서 오른쪽으로 2픽셀 밀어낸다. 패딩을 설정할 때에는 setPadding(int, int, int, int) 메서드를 사용하면 되고, 이를 쿼리하려면 getPaddingLeft(), getPaddingTop(), getPaddingRight(), getPaddingBottom()을 호출하면 된다. |
뷰는 패딩을 정의할 수 있지만, 여백 지원은 전혀 제공하지 않는다. 다만, 뷰 그룹이 그와 같은 지원을 제공한다. 자세한 내용은 ViewGroup 및 ViewGroup.MarginLayoutParams를 참고하면 된다. (치수에 관한 자세한 내용은 치수 값을 참고)
일반 레이아웃
ViewGroup 클래스의 각 서브클래스는 각기 고유한 방식으로 자신 안에 중첩된 뷰를 표시한다. 아래는 Android 플랫폼에서 기본 제공되는, 보다 일반적인 레이아웃 유형을 몇 가지 나타낸 것이다.
참고: UI 디자인을 달성하기 위해 하나 이상의 레이아웃을 다른 레이아웃 안에 중첩할 수 있지만 레이아웃 계층 구조를 가능한 한 얕게 유지하도록 애써야 한다. 중첩된 레이아웃이 적을수록 레이아웃이 더 빠르게 그려진다 (가로로 넓은 뷰 계층 구조가 세로로 깊은 뷰 계층 구조보다 낫다). |
선형 레이아웃 | 상대 레이아웃 | 웹 보기 |
여러 하위 요소를 하나의 가로 방향 또는 세로 방향 행으로 정리하는 레이아웃. 이 레이아웃은 창의 길이가 화면 길이를 웃도는 경우 스크롤바를 생성한다. | 여러 하위 객체의 위치를 서로 상대적으로 나타내거나 (하위 객체 A가 하위 객체 B의 왼쪽), 상위 요소와 상대적으로 나타낼 수 있도록 해준다 (상위 요소의 맨 위에 맞춰 정렬). |
웹페이지를 표시한다.
|
https://developer.android.com/guide/topics/ui/declaring-layout?hl=ko
'App Programming > Android Studio' 카테고리의 다른 글
[Android Studio] Default Activity not found (0) | 2022.08.04 |
---|---|
[Android Studio] 레이아웃 (4) (0) | 2022.08.04 |
[Android Studio] 레이아웃 (2) (0) | 2022.08.04 |
[Android Studio] 레이아웃 (1) (0) | 2022.08.04 |
Android Studio (0) | 2022.04.06 |