1. setContentView
- 이 메서드가 호출되면 자신의 레이아웃 파일을 파라미터로 전달하여 액티비티라 불리는 소스 파일과
연결이 된다.
2. java 코드에서 레이아웃 추가하기
- 따로따로 분리하여 작성하면, 레이아웃의 구성을 바꿀 때 java 소스 코드를 건들 필요가 없는
장점이 있다.
- 그러나 화면 레이아웃을 미리 못 만들거나 바로바로 필요할 때마다 레이아웃을 만들어야 할 경우
java 소스 코드에서 구성할 수도 있다.
- 예를 들면, 어떤 이벤트가 일어날 경우, 유형에 따라 화면 구성을 바꾸는 것이 있다.
- 아래의 코드를 보자.
package com.example.exercise001;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.LinearLayout;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
LinearLayout mainLinearLayout = new LinearLayout(this);
mainLinearLayout.setOrientation(LinearLayout.VERTICAL);
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.WRAP_CONTENT
);
Button btn1 = new Button(this);
btn1.setText("Button");
btn1.setLayoutParams(params);
btn1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://m.naver.com"));
startActivity(intent);
}
});
mainLinearLayout.addView(btn1);
setContentView(mainLinearLayout);
}
}
(키워드 this가 눈에 보일 것인데, 이것은 Context 객체가 전달된 것이다.)
(즉, new 연사자를 이용하여 뷰 객체를 만들 떄는 항상 Context 객체가 전달 되어야 한다.)
(다시 말해 모든 UI 객체들은 Context 객체를 전달 받도록 되어 있는 것이다.)
(AppCompatActivity 클래스는 Context를 상속하므로 이 클래스 안에서는 this를 Context 객체로 사용할 수 있다.)
(만약 상속받지 않았더라면, getApplicationContext라는 메서드를 호출한다.)
(레이아웃에 뷰를 추가하고 싶다면 addView() 메서드를 사용하면 된다.)
(이렇게 직접 코드를 넣은 후, 마지막에 setContentView 메서드에 파라미터로 레이아웃을 넣어주면 완성이 된다.)
'안드로이드 with 자바 > 자잘한 문제들' 카테고리의 다른 글
BitmapDrawable을 통한 스크롤 뷰 구현 (0) | 2022.05.11 |
---|---|
부분 레이아웃을 전체 레이아웃에 메모리에 객체화 시키기. (0) | 2022.01.11 |
Toast 직접 만들어 표시하기. (0) | 2022.01.06 |
[3] 두 개의 이미지 주고 받기. (0) | 2021.12.28 |
[4] SMS 입력 화면 만들고 글자의 수 표시하기 (0) | 2021.12.28 |