ViewGroup
ViewGroup은 자식뷰(View, ViewGrup)를 포합할 수 있습니다. 레이아웃을 구성하는 View들은 ViewGroup의 루트에 따라 계층적으로 조직됩니다.
View
이 클래스는 사용자 인터페이스 구성 요소의 기본 빌딩 블록을 나타냅니다. View는 화면의 직사각형 영역을 차지하며 그리기 및 이벤트 처리를 담당합니다. View는 대화형 UI 구성 요소(버튼, 텍스트 필드 등)를 만드는 데 사용되는 위젯의 기본 클래스입니다.
디멘션 리소스는 안드로이드 위젯들의 크기에 대한 정보를 담고 있는 리소스입니다. (ex. dp, sp, pt, px 등)
리니어 레이아웃은 모든 자식뷰를 하나의 방향으로 정렬하는 뷰그룹입니다. android:orientation 어트리뷰트를 통해서 수직(vertical), 수평(horizontal)으로 설정할 수 있습니다.
LinearLayout과 LinearLayoutCompat의 차이
LinearLayoutCompat은 API수준과 상관없이 모든 LinearLayout관련 메소드가 들어있다. 반면 LinearLayout에는 지금 사용하고 있는 API에 해당하는 메소드만 들어있다. 그래서 구버전 API에서 새로운 기능을 사용하고 싶다면 LinearLayoutCompat을 써야한다.
텍스트를 입력하고 수정하기 위한 유저 인터페이스 요소입니다. EditText위젯을 정의할 때, 반드시 inputType 속성을 지정해야합니다. inputType 속성에 따라 그에 맞는 키보드가 유저에게 보여집니다.
기본적으로 Button의 색상은 res/theme.xml의 colorPrimaryVariant의 색상을 갖는듯 하다. (찾아보진 않았음. 실험해본 결과)
이 기본값에서 사용자가 색을 지정하기 위해선 backgroundTint 속성을 변경해주면 된다.
activity_main.xml
<Button
android:id="@+id/done_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:backgroundTint="@color/colorAccent"/>
컨스트레인트 레이아웃은 위젯의 크기와 위치를 유연하게 조정할 수 있는 뷰그룹입니다. 이 레이아웃을 사용하면 단일의 뷰 계층으로(뷰 그룹안에 뷰 그룹을 넣는 일 없이) 더 크고 복잡한 레이아웃을 만들 수 있습니다.
제약 조건은 두 UI 요소 간의 연결 또는 정렬입니다. 각 제약 조건은 한 보기를 다른 보기, 상위 레이아웃 또는 보이지 않는 지침에 연결하거나 정렬합니다. ConstraintLayout에서 최소한 하나의 수평 및 하나의 수직 제약 조건을 정의하여 뷰를 배치합니다.
체인은 양방향 제약 조건으로 서로 연결된 뷰 그룹입니다. 체인 내의 보기는 수직 또는 수평으로 분산될 수 있습니다.
체인의 첫 번째 뷰를 체인 헤드라고 합니다. 체인의 헤드에 설정된 속성은 체인의 모든 뷰를 제어하고 위치를 지정합니다.
Baseline constraint는 텍스트를 가진 View 기준선을 다른 View의 텍스트의 기준선과 정렬합니다. 텍스트가 포함된 View를 정렬하는 것은 특히 글꼴의 크기가 다른 경우 어려울 수 있습니다.
buildFeatures {
dataBinding true
}