본문 바로가기

안드로이드/View

[안드로이드] ConstraintLayout - Group에 대하여

1월 1일 오전은 할일이 없다.

여자친구는 이직한 회사 자기소개 준비중이다. 나는 오후에 약속이다. 갤럭시 A52s 5G 받으러 가야한다.

카이막도 완성되려면 1시간 더 기다려야 한다.

이런 적적하고 뭔가 게임도 하기 싫은 시간에는 역시 블로그 포스팅이 제격이다.

 

그래서 오늘은 할일도 없는김에 저번에 하던 ConstraintLayout의 가상 오브젝트 중 Group에 대하여 정리할 것이다.

 

- Group

 

1명 이상의 사람이 모여서 집단을 만드는것을 우리는 영어로 그룹이라고 한다. 이 개념을 안드로이드 View의 시각으로 바라본다면, 1개 이상의 View를 모아서 집단으로 만드는 것이 Group이다. 이러한 Group을 요래조래 해본 결과 아래와 같은 특징을 보인다.

 

  • 기본적으로 1개 이상을 대상으로 그룹을 지정할 수 있다.

  • 그룹과 View 혹은 그룹끼리 그룹을 지정할 수 있다.

  • 만약 하위 그룹 혹은 View의 Visibility가 GONE 혹은 INVISIBLE 이여도, 상위 그룹의 Visibility가 VSIBILE이면 하위 그룹의 Visibility는 무시된다.

 

Group은 사용할 때 아래 2가지 속성을 써줘야 한다.

  • android:visibility = " visible, gone, invisible 중 하나"
  • app:constraint_referenced_ids = " 아이디 값들 콤마(,)를 기준으로 나뉜다"

 

사용방법은 아래 예제를 통하여 보면 편할 것이다.

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">


    <Button
        android:id="@+id/btn1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:ellipsize="end"
        android:maxLines="1"
        android:text="테스트"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />


    <TextView
        android:id="@+id/tv2"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:ellipsize="end"
        android:maxLines="1"
        android:text="이 것은 테스트를 위한 텍스트뷰 입니다."
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@id/btn1" />

    <Button
        android:id="@+id/btn3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="temp"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@id/tv2" />

    <androidx.constraintlayout.widget.Group
        android:id="@+id/group1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:visibility="gone"
        app:constraint_referenced_ids="btn1, tv2, btn3" />

    <androidx.constraintlayout.widget.Group
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:visibility="visible"
        app:constraint_referenced_ids="tv1, group1" />

    <TextView
        android:id="@+id/tv1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello World!"
        android:visibility="gone"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />


</androidx.constraintlayout.widget.ConstraintLayout>