학교 공부/안드로이드 프로그래밍

직접 풀어보기 5-3 (교재 P.216)

_빌런 2022. 3. 31. 02:01

[ 코드에 들어가기 전에 ]

  • 코드에서 중요하게 생각하는 부분과, 새로 공부하는 부분만 발췌해서 부연 설명
  • 코드 전체를 첨부하기에는 비슷한 부분의 반복이고, 읽기도 힘들고, 길어지니 링크 참조
  • https://miny-genie.tistory.com/33
// JAVA Code

~~~~~~~~~~~~~~~~~~~~ ( 생략 ) ~~~~~~~~~~~~~~~~~~~~

        LinearLayout.LayoutParams Lpara = new LinearLayout.LayoutParams(
                LinearLayout.LayoutParams.MATCH_PARENT,
                LinearLayout.LayoutParams.MATCH_PARENT);

        LinearLayout baseLayout = new LinearLayout(this);
        baseLayout.setOrientation(LinearLayout.VERTICAL);
        baseLayout.setBackgroundColor(Color.rgb(89, 146, 219));
        setContentView(baseLayout, Lpara);

        EditText editText = new EditText(this);
        editText.setText("");
        baseLayout.addView(editText);

        Button btn = new Button(this);
        btn.setText("버튼입니다.");
        btn.setBackgroundColor(Color.MAGENTA);
        baseLayout.addView(btn);

        TextView txtview = new TextView(this);
        txtview.setText("이것은 TextView 입니다.");
        baseLayout.addView(txtview);

~~~~~~~~~~~~~~~~~~~~ ( 생략 ) ~~~~~~~~~~~~~~~~~~~~


LinearLayout.LayoutParams Lpara = new LinearLayout.LayoutParams();

 

Lpara라는 LayoutParams의 변수를 선언한다. 자바에서 Layout을 생성하는 문법이니 이건 이해...보단 암기이다.

LayoutParams( )안의 두 매개변수는 각각 android:layout_width=""와 android:layout_height=""에 해당한다.

저번 실습에서 알아본 weight도 할당하고 싶다면 뒤에 숫자 매개변수 하나만 추가해주면 된다.

LayoutParams(~.MATCH_PARENT, ~.MATCH_PARENT, 1); 처럼 말이다.


LinearLayout baseLayout = new LinearLayout(this);

 

baseLayout이라는 변수로 LinearLayout을 선언하고 있다. 이해를 하면 좋다만...이 또한 문법이니

XML에서 <LinearLayout> </LinearLayout>에 해당한다.

 

setContentView(baseLayout, Lpara);

 

위에서 선언한 layout_width, layout_height, weight, orientation 같은 변수를 묶어주는 느낌이다.

baseLayout(<LinearLayout></LinearLayout>) 안에 저 변수들을 넣으라는 의미의 코드이다.

Button btn = new Button(this);

btn.setText("버튼입니다.");

baseLayout.addView(btn);

 

xml이 아니라 java에서 버튼을 생성하는 코드이다. xml에서의 <Button ~~~ /> 부분

흔히 자바 실습할 때 보는 Scanner처럼 생성자를 활용한 객체 생성 방식이다.

자바에서 객체를 생성해서 findViewById가 아니라 addView를 통해서 화면에 띄어주고 있다.

 

직접 풀어보기 5-3 실행 결과