본문 바로가기
프로그래밍/android

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

by 신일석 2014. 11. 26.

자바 코드에서 화면을 구성해 보자.

순서는 먼저 레이아웃을 만들고, 레이아웃에 들어갈 뷰들의 파라미터를 생성하고, 버튼을 만들어 앞서 생성한 파라미터를 정하면 된다.


문제해결


public class SampleLayoutCodeActivity extends Activity {

    @Override
    // 시작되는 지점
    protected void onCreate(Bundle savedInstanceState) {
// 상속을 받은 부모 클래스가 가지는 동일한 이름의 onCreate()함수를 호출하는 것
        super.onCreate(savedInstanceState);

        // 뷰 객체를 코드에서 만들 때 뷰의 생성자에는 항상 Context 객체가 전달되어야 하는데
        // 액티비티는 컨텍스트(Context)를 상속하므로 액티비티 클래스 안에서는 this를 Context 객체로 사용할 수 있다.
        // (1)new 연산자로 리니어 레이아웃을 만들고 방향 설정
        LinearLayout mainLayout = new LinearLayout(this);
        mainLayout.setOrientation(LinearLayout.VERTICAL);

        // (2)new 연산자로 레이아웃 안에 추가될 뷰들에 설정할 파라미터 생성
        // LayoutParams 객체를 새로 만들 경우에는 반드시 뷰가 추가될 영영에 대한 기본 채우기(fill) 속성을 지정해야 하며,
        // 이때 사용하는 두 가지 상수인 LayoutParams.MATCH_PARENT와 LayoutParams.WRAP_CONTENT 중 하나가 사용된다.
        LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
                ViewGroup.LayoutParams.MATCH_PARENT,
                ViewGroup.LayoutParams.WRAP_CONTENT);

        // (3)버튼을 생성하고 파라미터를 적용한다.
        Button button01 = new Button(this);
        button01.setText("Button01");
        button01.setLayoutParams(params);
        // 뷰그룹에 뷰를 추가하기 위해 addView를 사용한다.
        mainLayout.addView(button01);
        // addView 메소드는 필요한 경우 LayoutParams 객체를 같이 전달할 수도 있다.
        // mainLayout.addView(button01, params);

        // (4) R.layout.main과 같이 XML레이아웃으로 정의된 리소스가 아니라 자바 코드에서 만든 뷰그룹을 화면에 생성한다.
        // XML 레이아웃에서 정의할 수 있는 대부분의 속성들은 자바에서 객체로 만들거나 객체의 메소드를 호출하여 설정할 수 있다.
        setContentView(mainLayout);
    }
}