Palette란?
android studio의 palette 기능은 디자인을 코드로 작성하여 표현하는것이 아닌, 마우스로 직접 조작하여 표현할 수 있는 기능이다. palette에서 조작할수 있는 기능들에 대해 알아보자.
먼저 Text 탭에서 사용할 수 있는 기능들은 나타내고 싶은 text를 지정해서 보여줄 수 있는 기능도 있고 사용자에게 입력을 받아 text를 표현하는 기능도 있다. 사용자에게 입력을 받는 경우에는 Password나 E-mail등 다양한 상황에서의 기능들이 있으니 적절히 사용하면 될 것이다.
Buttons 탭에서는 이와같은 기능들이 있다. 이 중에서 이번에 layout을 구성할때 가장 많이 사용한 것은 Button과 ImageButton이다. ImageButton은 말 그대로 텍스트 대신 이미지를 포함한 버튼을 나타내주는 기능이다. 기본인 Button기능을 제외한 다른 기능들은 모두 Button의 subclass에 속한다.
widgets 탭에서의 ImageView는 Bitmap 혹은 Drawable 이미지 리소스들을 화면에 보이게 해준다.
Layouts 탭에서는 각종 Layout들을 사용할 수 있다. Layout에 대해서는 아래에 더 자세히 쓰도록 하겠다.
Containers 탭에서의 RecyclerView를 얘기해보자면, ListView와 비슷한데 여기에서 더 유연해진 버전이라고 할 수 있다. 많은 데이터를 스크롤할수있는 리스트로 표시해주는 위젯이 RecyclerView이다.
Layout에 관하여
ConstraintLayout 은 위치와 크기를 유연하게 조절할 수 있기 때문에 다양한 해상도에 적용시킬 수 있다.
LinearLayout 은 단일 열에 수평적으로 혹은 단일 행에 수직적으로 다른 view들을 정렬할 수 있는 layout이다. orientation 속성을 이용하여 Children View의 배치 방향을 바꿀 수 있다.
FrameLayout 은 여러 view들중 한 개의 view를 화면에 나타내기 위해 그 view가 차지할 구역을 가려버리기 위해 사용하는 layout이다. 일반적으로, FrameLayout은 children을 각각 오버래핑하지 않고 각기 다른 화면의 크기를 조절할 수 있는 방법으로 child view들을 구성하기 힘들기 때문에, 단일 child view를 유지하기 위해 사용된다. 하지만 android:layout_gravity 속성을 사용하여, 각 child에 gravity를 배분함으로서 FrameLayout에서 child view들의 위치를 조절하고 FrameLayout에 다수의 children을 추가할 수 있다.
TableLayout 은 children을 행과 열들로 정렬한다. TableLayout은 TableRow 객체들로 구성되어있다. 각각의 TableRow는 추가될수록 행이 늘어난다.
GridLayout 은 사각형의 grid(격자 무늬를 생각하면 쉽다)안에 children을 위치시키는 layout이다. Grid는 보여지는 구역을 cell들로 나누는 일련의 무한히 얇은 선들로 구성되어있다. N개의 열을 가진 grid는 0부터 N까지를 포함하는 N+1개의 index를 가진다. 어떻게 GridLayout이 설정되었든간에, grid index 0은 container의 leading edge로 고정이 되어 있고, grid index N은 trailing edge로 고정되어 있다.
RelativeLayout 은 children간에 혹은 parent와의 상대적인 위치에 따라 표시될 영역을 결정하도록 만드는 layout이다.