Android Studio

Do it 안드로이드 앱 프로그래밍 - 2) 레이아웃

_jordy 2021. 3. 4. 19:45

레이아웃

1) 제약 레이아웃(Constraint) : 디폴트 레이아웃

2) 리니어 레이아웃(Linear) : 한 쪽 방향으로 차례대로 뷰를 추가하며 화면을 구성하는 방법( orientation 속성 값=> Horizontal 가로/ Vertical 세로)

3) 상대 레이아웃(Relative) : 부모 컨테이너나 다른 뷰와의 상대적 위치로 화면을 구성하는 방법

4) 프레임 레이아웃(Frame) : 가장 상위에 있는 하나의 뷰/ 뷰 그룹만 보여주는 방법, 여러개의 뷰가 들어가면 중첩하여 쌓음-> 여러개의 뷰를 중첩한 후 각 뷰를 전환하여 보여주는 방식으로 자주 사용

5) 테이블 레이아웃(Table) : 격자 모양의 배열을 사용하여 화면 구성하는 방법

 

*뷰의 배경색 : XML 레이아웃에서 색상 지정 시 #+색상값(ARGB)

 

*뷰 정렬 : layout_gravity => 뷰가 어디에 위치할 것인지 결정 , gravity => 뷰의 내용물의 위치 결정(텍스트 뷰/이미지)

 

 

padding vs margin 

*layout_weight : 여유공간을 분할하여 기존에 추가했던 뷰들에게 할당할 수 있는 속성 

ex) 두 개의 뷰에 각각 1,2값 지정 -> 각각 1/3, 2/3만큼 여유공간을 분할 한 후 나눠갖게 됨

layout_width, layout_height로 지정하는 뷰의 크기는 wrap_content나 숫자 값으로 지정되어야 함.

 

 

*프레임레이아웃과 뷰의 전환 ( 버튼누르면 이미지 바뀜)

int imageIndex = 0;
~
public void onButton1Clicked(View v){
	chageImage();
}

private void changeImage(){
	if (imageIndex == 0){
    	imageView.setVisibility(View.VISIBLE);
        imageView2.setVisibility(View.INVISIBLE);
        
        imageIndex = 1;
    } else if(imageIndex == 1){
        imageView.setVisibility(View.INVISIBLE);
        imageView2.setVisibility(View.VISIBLE);
        
        imageIndex = 0;
    }
 }

 

 

 

 

*테이블 레이아웃 만들 때, 버튼을 추가한 후 오른쪽에 남는 공간이 없도록 만들고 싶은 경우

-> TableLayout 태그에 stretchColumns속성을 추가한다.

<TableLayout
android:stretchColumns="0,1,2">

=> 0,1,2 칼럼에 가로방향으로 여유공간이 있다면 그 여유공간을 모두 채운 칼럼을 설정 

 

 

 

*스크롤뷰

이미지뷰가 화면 영역을 넘어갈 때 스크롤을 만들고 싶다면 XML 레이아웃에서 다음과 같이 스크롤뷰로 감싸면 된다.

<ScrollView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
>
<ImageView
    android:id="@+id/imageView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    />
</ScrollView>