JLOG

[안드로이드 스튜디오 강좌 #9]리니어 레이아웃(Linear Layout)-2 자바 코드에서 화면 구성하기 본문

안드로이드 스튜디오/Do it 안드로이드 스튜디오

[안드로이드 스튜디오 강좌 #9]리니어 레이아웃(Linear Layout)-2 자바 코드에서 화면 구성하기

정정선선 2020. 4. 28. 15:25

! 목표

화면 레이아웃을 미리 만들 수 없거나 레이아웃을 바로 만들어야 하는 경우에 자바 소스 코드에서 화면 레이아웃을 구성해야 하는 경우가 있다.

 

자바 코드에서 리니어레이아웃을 생성해 보면서 자바로 화면을 구성하는 방법을 알아보자

 

 

 

- 자바 코드에서 화면 구성하기

 

디자인 화면에서 레이아웃을 변경하면 XML 파일도 같이 변경이 된다.

이 XML 파일은 Java 소스 파일과 연결되는데,

 

Java 코드를 확인해보자

setContentView(R.layout.activity_main);

 

SetContentView 메서드가 activity_main.xml을 자바 MainActivity.java 파일과 연결시켜주는 역할을 한다.

 

화면에 보이는 레이아웃 소스코드와 자바 소스 코드는 분리되어 있어, 화면 구성을 바꿀 때 레이아웃 소스코드만 수정하면 된다.

하지만, 화면 레이아웃을 미리 만들 수 없거나 레이아웃을 바로 만들어야 하는 경우에 자바 소스 코드에서 화면 레이아웃을 구성해야한다.

 

 

위에서 만들었던 XML로 만든 화면을 자바로 만들어보자.

LayoutCode-Activity.java를 만들기 위해 오른쪽 Project 창에서

Project-app-src-main-java-org.techtown.test-MainActivity

또는

Android-java-org.techtown.test-MainActivity

을 선택해 Ctrl+C, Ctrl+V로 복사해보자.

 

 

이름이 중복되기 때문에 이름을 바꾸라는 대화상자가 나온다.

이름에 LayoutCodeActivity를 입력한후 OK하자

 

LayoutCodeActivity.java에 아래와 같은 코드를 입력해주자.

 

package org.techtowm.test;

import android.os.Bundle;
import android.widget.Button;
import android.widget.LinearLayout;

import androidx.appcompat.app.AppCompatActivity;

public class LayoutCodeActivity extends AppCompatActivity {

    @Override
    protected void onDestroy() {
        super.onDestroy();
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        LinearLayout mainLayout = new LinearLayout(this);
        mainLayout.setOrientation(LinearLayout.VERTICAL);

        LinearLayout.LayoutParams params =
                new LinearLayout.LayoutParams(
                        LinearLayout.LayoutParams.MATCH_PARENT,
                        LinearLayout.LayoutParams.WRAP_CONTENT
                );

        Button button1 = new Button(this);
        button1.setText("Button1");
        button1.setLayoutParams(params);
        mainLayout.addView(button1);

        setContentView(mainLayout);

    }
}

 

 

* 코드 설명

        LinearLayout mainLayout = new LinearLayout(this);
        mainLayout.setOrientation(LinearLayout.VERTICAL);

new 연산자로 LinearLayout을 생성 후 방향 설정

 

 

Button button1 = new Button(this);

new 연산자를 사용해 뷰 객체를 코드에서 만들 때 항상 Context 객체가 전달되어야한다.

Context 객체는 객체의 정보를 담고 있는 객체를 의미한다.

this를 Context객체로 사용한다(안드로이드에만 있는 특징이다).

 

 

        LinearLayout.LayoutParams params =
                new LinearLayout.LayoutParams(
                        LinearLayout.LayoutParams.MATCH_PARENT,
                        LinearLayout.LayoutParams.WRAP_CONTENT
                );

new 연산자로 레이아웃 안에 추가될 뷰들에 설정할 파라미터 생성

LayoutParmas : 뷰 배치를 위한 속성을 설정해주는 역할

처음 LayoutParams 객체를 만들 때 뷰의 가로와 세로 속성을 지정해주어야한다.

LayoutParams.MATCH_PARENT/LayoutParams.WRAP_CONTENT 말고도 직접 숫자로 설정 가능하다.

 

 

        Button button1 = new Button(this);
        button1.setText("Button1");
        button1.setLayoutParams(params);
        mainLayout.addView(button1);

 

버튼에 파라미터 설정하고 레이아웃에 추가

addView : 소스코드에서 레이아웃에 뷰를 추가해준다.

 

 

setContentView(mainLayout);

 

새로 만든 레이아웃을 화면에 설정

 

 

 

 

액티비티는 하나의 화면이다.

앱 실행시 처음 보이는 화면을 메인 액티비티라고 부른다.

즉, 프로젝트를 처음 생성하면 메인 액티비티가 만들어지고 그 액티비티를 위한 자바 소스가 MainActivity.java이다.

이 액티비티는 AndroidManifest.xml 파일 안에 자동으로 등록된다.

Android-App-manifests-AndroidManifest.xml으로

AndroidManifest.xml 파일을 열고 메인 액티비티를 우리가 방금 만들었던 LayoutCodeActivity로 수정해보자.

 

 

이렇게 바꿔준 후 실행하면, 버튼 하나가 들어간 화면을 확인할 수 있다.

Comments