#9 [Kotlin] View, Layout

정상준·2022년 10월 28일
0

kotlin

목록 보기
9/26
post-thumbnail
post-custom-banner

📝TextView

android:autoLink 속성

TextView에 출력한 문자열을 분석해 특정 형태의 문자열에 자동 링크를 추가해 준다.

autoLink 속성값으로는 web.phone.email 등을 사용할 수 있으며 여러 개를 함께 설정하려면 ||기호로 연결한다.

android:maxLines 속성

TextView에 문자열을 출력할 때 긴 문자열은 자동 줄바꿈을 하는데 때로는 문자열이 특정 줄까지만 나오도록 해야 할 때가 있다. 이때 android:maxLines = "3" 으로 설정하면 문자열이 3행까지만 출력된다.

android:ellipsize 속성

maxLines 속성을 이용할 때 출력되지 않은 문자열이 더 있다는 것을 표시하려면 줄임표(...)를 넣는데 이때 ellipsize 속성을 지정한다. 속성값으로는 end, middle, start등이 있으며 end로 설정하면 문자열 뒤에 줄임표가 추가된다. start와 middle은 줄임표가 각각 앞부분, 중간 부분에 추가되는데 end와 달리 singleLine="true" 속성으로 문자열을 한 줄로 출력했을 때만 적용된다.

📝ImageView

android:maxWidth, android:maxHeight, android:adjustViewBounds 속성

ImageView가 출력하는 이미지의 최대 크기를 지정한다. 뷰의 크기는 layout_width,layout_height 속성으로 설정하지만 이 속성은 크기가 고정되어 있어 뷰에 넣을 이미지 크기가 다양하다면 이미지와 뷰의 크기가 맞지 않는 상황이 발생할 수 있다. 또한 이미지가 클 때 layout_width, layout_height의 속성값을 wrap_content로 지저하면 뷰의 크기가 지나치게 커지는 문제가 있다.maxWidth, maxHeight 속성은 android:adjustViewBounds 속성과 함께 사용해야 하며, 이 속성을 true로 설정하면 이미지의 가로세로 길이와 비례해 뷰의 크기를 맞춘다.

📝뷰 바인딩

뷰 바인딩은 레이아웃 XML 파일에 선언한 뷰 객체를 코드에서 쉽게 이용하는 방법이다.

build.gradle 파일을 열고 android 영역에 buildFeatures를 선언한다. 그리고 그 안에 뷰바인딩을 적용하라는 의미로 viewBinding = true 를 설정한다. 이렇게 하면 레이아웃 XML 파일에 등록된 뷰 객체를 포함하는 클래스가 자동으로 만들어진다.

자동으로 만들어지는 클래스의 이름은 첫 글자를 대문자로 하고 밑줄은 빼고 뒤에 오는 단어를 대문자로 만든 후 Binding을 추가한다. 자동으로 만들어진 클래스의 inflate() 함수를 호출하면 바인딩 객체를 얻을 수 있다.이때 인자로 layoutInflater를 전달한다. 그리고 바인딩 객체의 root 프로퍼티에는 XML의 루트 태그 객체가 자동으로 등록되므로 액티비티 화면 출력은 setContentView() 함수에 binding.root를 전달하면 된다. 만약 바인딩 클래스로 만들 필요가 없으면 XML 파일의 루트 태그에 tools:viewBindingIgnore="true" 라는 속성을 추가한다.

📝선형으로 배치 - LinearLayout

뷰를 정렬하는 gravity, layout_gravity 속성

gravity 속성의 정렬 대상은 콘텐츠이며 layout_gravity는 뷰 자체를 정렬하는 속성이다.

📝상대 위치로 배치 - RelativeLayout

RelativeLayout은 상대 뷰의 위치를 기준으로 정렬하는 레이아웃 클래스이다. 즉 화면에 이미 출력된 특정 뷰를 기준으로 방향을 지정하여 배치한다. 이때 다음 속성을 사용하며 각 속성에 입력하는 값은 기준이 되는 뷰의 id이다.

andriod:layout_above : 기준 뷰의 위쪽에 배치

andriod:layout_below : 기준 뷰의 아래쪽에 배치

andriod:layout_toLeftOf : 기준 뷰의 왼쪽에 배치

andriod:layout_toRightOf : 기준 뷰의 오른쪽에 배치

맞춤 정렬하는 align 속성

android:layout_alignTop : 기준 뷰와 위쪽을 맞춤

android:layout_alignBottom : 기준 뷰와 아래쪽을 맞춤

android:layout_alignLeft : 기준 뷰와 왼쪽을 맞춤

android:layout_alignRight : 기준 뷰와 오른쪽 맞춤

android:layout_alignBaseline : 기준 뷰와 텍스트 기준선을 맞춤

📝겹쳐서 배치 - FrameLayout

FrameLayout은 뷰를 겹쳐서 출력하는 레이아웃 클래스이다. 단순히 겹쳐서 출력하는 레이아웃이므로 특별한 속성도 없다. FrameLayout은 똑같은 위치에 여러 뷰를 겹쳐 놓고, 어떤 순간에 하나의 뷰만 출력할 때 사용한다. 따라서 대부분 뷰의 표시 여부를 설정하는 visibility 속성을 함께 사용한다.

📝표 형태로 배치 - GridLayout

GridLayout은 행과 열로 구성된 테이블 화면을 만드는 레이아웃 클래스로 줄바꿈을 자동으로 해준다.

orientation : 방향 설정

rowCount : 세로로 나열할 뷰 개수

columnCount : 가로로 나열할 뷰 개수

GridLayout에 추가한 뷰의 크기는 기본으로 wrap_content로 지정되므로 속성을 설정하지 않아도 오류가 발생하지 않는다.

GridLayout 속성

GridLayout으로 뷰를 배치하면 추가한 순서대로 배치되는데, layout_low, layout_column 속성을 이용하면 특정 뷰의 위치를 조정할 수 있다.

layout_row : 뷰가 위치하는 세로 방향 인덱스

layout_column : 뷰가 위치하는 가로 방향 인덱스

열이나 행 병합하기

어떤 뷰가 테이블에서 여러 칸을 차지하게 설정할 수 있다.

layout_columnSpan : 가로로 열 병합

layout_rowSpan : 세로로 행 병합

📝계층 구조로 배치 - ConstraintLayout

ConstraintLayout은 안드로이드 플랫폼이 아니라 androidx에서 제공하는 라이브러리이다. ConstraintLayout은 뷰를 상대 위치로 배치하는 RelativeLayout과 비슷하지만 더 많은 속성을 제공한다. 또한 코드가 아닌 마우스 클릭만으로 레이아웃을 구성할 수 있도록 레이아웃 편집기를 제공한다.

ConstraintLayout은 이름 그대로 뷰를 화면에 출력할 때 id.layout_width, layout_height 이외에 제약조건을 지정해 줘야한다. 부모 영역에서 어디에 어느 정도의 여백으로 출력해야 하는지, 또는 다른 뷰를 기준으로 상대 위치를 설정해 줘야한다.

profile
안드로이드개발자
post-custom-banner

0개의 댓글