Android - 로또번호 추첨기(2)

Code_Alpacat·2021년 11월 8일

안드로이드 기초

목록 보기
15/18

Constraint Layout

현재 현업에서 가장 많이 쓰이는 레이아웃인 Constraint Layout을 사용할 것이다! Linear Layout은 가로와 세로의 단위로 화면을 계속해서 잘라서 사용해서 배치하는 불편함이 크지만, Constraint Layout은 제약을 이용하므로, 상당히 배치에 자유롭다.

  • 두 레이아웃을 붙이려면 하나의 축을 기준으로 삼아 이어붙인다.
  • 레이아웃 사이에 margin을 주는 것이 가능하다. 버튼 A와 버튼 B를 붙일 수 있고, Match_parent가 아닌 0dp혹은 match_constraint를 이용한다.
  • 추가로, 세가지 버튼을 붙여 사용하다가, 중간의 버튼이 사라진다면 gonemargin 기능으로 나머지 두 버튼을 붙이거나 여백을 설정해줄 수 있다.

자세한 내용은 아래 링크에:
https://www.google.com/url?client=internal-element-cse&cx=000521750095050289010:zpcpi1ea4s8&q=https://developer.android.com/reference/androidx/constraintlayout/widget/ConstraintLayout&sa=U&ved=2ahUKEwiu-LWcqYj0AhUTK5QKHXY8ABEQFnoECAQQAg&usg=AOvVaw1sr28TXaakkH7AkSMroNYf

NumberPicker

  • 숫자를 고를 수 있는 기능이다. Constraint Layout에서 배치를 잡아주지 않으면 빨간줄로 에러가 뜬다.
<NumberPicker
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        />
  • 모든 기능에 id값을 부여해줘야하는 이유는 코틀린으로 동작에 활용되지 않더라도 View사이에 관계를 정의해줘야만하기 때문이다.

각 start, end, bottom, top의 속성들을 잘 활용하면 원하는 곳에 배치하기 쉽다. id값을 활용하는 것도 유기적으로 배치하기 용이하다.

  • 0dp를 쓰면, 폭이나 길이를 최대로 키우는게 가능하다.
  • constraint layout안에 LinearLayout을 만들었다.

아래는 지금까지 구현한 코드이다.

<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">

    <NumberPicker
        android:id="@+id/numberPicker"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="100dp"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <Button
        android:id="@+id/addButton"
        app:layout_constraintHorizontal_chainStyle="packed"
        android:layout_marginTop="10dp"
        android:layout_marginEnd="16dp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="번호추가"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/numberPicker"
        app:layout_constraintEnd_toStartOf="@id/clearButton"/>

    <Button
        android:layout_marginStart="16dp"
        android:id="@+id/clearButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="초기화"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintTop_toTopOf="@id/addButton"
        app:layout_constraintStart_toEndOf="@id/addButton"/>

    <LinearLayout
        app:layout_constraintTop_toBottomOf="@id/addButton"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        android:layout_marginTop="30dp"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:gravity="center">

        <TextView
            android:id="@+id/textView1"
            android:textSize="20sp"
            android:textStyle="bold"
            android:text="1"
            android:layout_margin="5dp"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"/>
        <TextView
            android:id="@+id/textView2"
            android:layout_margin="5dp"
            android:textSize="20sp"
            android:textStyle="bold"
            android:text="1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"/>
        <TextView
            android:id="@+id/textView3"
            android:layout_margin="5dp"
            android:textSize="20sp"
            android:textStyle="bold"
            android:text="1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"/>
        <TextView
            android:id="@+id/textView4"
            android:layout_margin="5dp"
            android:textSize="20sp"
            android:textStyle="bold"
            android:text="1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"/>
        <TextView
            android:id="@+id/textView5"
            android:layout_margin="5dp"
            android:textSize="20sp"
            android:textStyle="bold"
            android:text="1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"/>
    </LinearLayout>


    <Button
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:id="@+id/runButton"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        android:layout_marginEnd="16dp"
        android:layout_marginStart="16dp"
        android:layout_marginBottom="16dp"
        android:text="자동생성시"

        />


</androidx.constraintlayout.widget.ConstraintLayout>
profile
In the future, I'm never gonna regret, cuz I've been trying my best for every single moment.

0개의 댓글