자바 코드에서 화면을 구성해 보자.
순서는 먼저 레이아웃을 만들고, 레이아웃에 들어갈 뷰들의 파라미터를 생성하고, 버튼을 만들어 앞서 생성한 파라미터를 정하면 된다.
문제해결
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);
}
}
'프로그래밍 > android' 카테고리의 다른 글
layout_gravity와 gravity의 구분 (0) | 2014.11.26 |
---|---|
No Activity에서 Activity 추가하기 (0) | 2014.11.25 |
앱이 실행될때 맨 처음 보여지는 액티비티로 지정하기 (0) | 2014.11.24 |