Android
Java 코드로 화면 만들기
_mojo_
2021. 8. 28. 16:09
지금까지 작성한 프로젝트는 기본적으로 XML 에서 code를 작성하여 화면을 구성하고 Java 파일의 setContentView() 메소드를 이용하여 화면을 출력하였다.
setContentView() 메소드는 XML 파일을 화면에 출력하는 기능을 한다.
R.layout.activity_main 은 바로 activity_main_xml 파일을 의미하므로 activity_main.xml 파일이 화면에 출력되는 것이다. (가장 일반적인 안드로이드 프로젝트 구성)
Java Code 만으로 화면을 구성하는 방법을 알아보도록 한다.
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//setContentView(R.layout.activity_main);
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT);
LinearLayout baseLayout = new LinearLayout(this);
baseLayout.setOrientation(LinearLayout.VERTICAL);
baseLayout.setBackgroundColor(Color.rgb(0,255,0));
setContentView(baseLayout, params);
Button btn = new Button(this);
btn.setText("버튼입니다");
btn.setBackgroundColor(Color.MAGENTA);
baseLayout.addView(btn);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(getApplicationContext(),"코드로 생성한 버튼입니다.", Toast.LENGTH_SHORT).show();
}
});
}
}
연습 ) 다음 화면을 XML 파일 없이 Java Code 로 만들어보기
XML Code
public class MainActivity extends AppCompatActivity {
EditText edit;
TextView text;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//setContentView(R.layout.activity_main);
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT);
LinearLayout baseLayout = new LinearLayout(this);
baseLayout.setOrientation(LinearLayout.VERTICAL);
setContentView(baseLayout, params);
edit = new EditText(this);
edit.setHint("여기를 입력하세요.");
baseLayout.addView(edit);
Button btn = new Button(this);
btn.setText("버튼입니다");
btn.setBackgroundColor(Color.YELLOW);
baseLayout.addView(btn);
text = new TextView(this);
text.setTextColor(Color.MAGENTA);
baseLayout.addView(text);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String s = edit.getText().toString();
text.setText(s);
}
});
}
}