1. 레이아웃

레이아웃 클래스들은 모두 ViewGroup 클래스로부터 상속 받음

레이아웃의 종류 (p.131 그림 참고)

  • LinearLayout : 자식들을 수직이나 수평으로 배치 (많이 사용)
  • TableLayout : 자식들을 테이블로 배치 (많이 사용)
  • GridLayout : 자식들을 바둑판으로 배치
  • RelativeLayout : 자식들을 부모나 다른 자식에 상대적으로 배치
  • ConstraintLayout : 자식들을 부모나 다른 자식에 상대적으로 배치 / 성능 제일 GOOD, 복잡도 낮음 (많이 사용)
  • TabLayout : 탭을 이용하여 겹쳐진 자식 중 하나를 선택
  • AbsoluteLayout : 절대 위치로 배치
  • FrameLayout : 모든 자식들을 겹치게 배치 (많이 사용)

2. 선형 레이아웃 (LinearLayout)

  1. 가장 기본적
  2. 중첩 레이아웃이 발생하면 안드로이드가 화면을 그리는데 시간이 더 소요됨
    -> ConstraintLayout 사용하면 중첩 레이아웃이 발생하지 않아 속도가 빨라짐

속성 - 관련 메소드 - 설명
orientation - setOrientation(int) - "horizontal" : 수명 / "vertical" : 수직 으로 지정
gravity - setGravity(int) - x축과 y축 상에 자식을 어떻게 배치할 것인지를 지정
baselineAligned - setBaseLineAligned(boolean) - false로 설정되면 자식 뷰들의 기준선을 정렬하지 않음

Gravity 속성

  • top
  • bottom
  • left
  • right
  • center_vertical
  • fill_vertical
  • center_horizontal
  • fill_horizontal
  • center
  • fill

3. 테이블 레이아웃 (TableLayout)

xml에서 테이블 레이아웃 안에서 < TableRow > 객체 사용
-> 각 행마다 길이가 다르다면 가장 긴 행의 길이가 테이블의 폭이 됨

4. 상대적 레이아웃 (RelativeLayout) - p.141

  1. 중첩된 레이아웃을 사용하지 않아도 되므로 레이아웃 계층 구조를 평펴하게 유지하여 성능을 향상 시킴
    속성
  • layout_above
  • layout_below
  • layout_centerHorizontal
  • layout_centerinParent
  • layout_toLeftOf
  • layout_toRightOf

5. 프레임 레이아웃 (FrameLayout)

  1. 가장 간단한 형태
  2. 등장하는 순서대로 화면에 표시
  3. 기준점은 좌측 상단
  4. 여러 자식 뷰들을 겹쳐서 배치한 후 뷰의 가시성 속성을 코드로 변경하여 어떤 순간에 하나의 뷰만 표시하게 할 때 사용

뷰의 가시성 제어

android:"(in)visible"
txt1.setVisibility(View.(IN)VISIBLE)

< Lab 계산기 앱 #2 작성 > - p.146

EditText : 1개
button : 11개
button : 1개

6. 코드로 레이아웃 만들기

//선형 레이아웃 생성
LinearLayout container = new LinearLayout(this);
container.setOrientation(LinearLayout.VERTICAL);

//버튼을 선형 레이아웃에 추가
Button b1 = new Button(this);
b1.setText("나는 버튼");
container.addView(b1);  // 레이아웃에 뷰를 추가

//만들어진 뷰 트리를 액티비티의 화면으로 설정
setContentView(container);

코드로 레이아웃 속성 변경

//xml
<LinearLayout
  android:id="@+/Layoutidname" //id 부여
>

//java
LinearLayout m = (LinearLayout)findViewById(R.id.Layoutidname);
m.setOrientation(LinearLayout.HoRIZONTAL);   //배치 뱡향을 수평으로 변경

7. 비주얼 도구를 사용하여 화면 작성하기

팔레트 , 컴포넌트 트리, 미리보기, 청사진, 속성
Infer Contraints 아이콘 - 자동으로 모든 위젯의 구속 조건을 만들어줌
Clear All Constraints 아이콘 - 모든 위젯의 구속 조건을 제거해줌

< Coding Challenge 비주얼 도구 사용하기 >

0개의 댓글