긍정곰의 연구소

안드로이드 - Hello Android! 코드로 레이아웃 작성 본문

긍정곰의개발일지/Android

안드로이드 - Hello Android! 코드로 레이아웃 작성

긍정곰 2017. 10. 5. 22:14
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.widget.TextView;

public class MainActivity extends Activity {
   @Override
   public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      TextView MyText = new TextView(this);
      MyText.setText("Hello Android!");
      setContentView(MyText);
   }

   @Override
   public boolean onCreateOptionsMenu(Menu menu) {
      getMenuInflater().inflate(R.menu.activity_main, menu);
      return true;
   }
}

위 형식은 당연히 권장되는 방법은 아니다.

단, 이런형태의 레이아웃 표현도 가능하다는점이고, 그외에 눈여겨봐야할 점은 TextView위젯을 레이아웃처럼 바로 사용하였다는 점이다.

원래 통상은 setContentView 메소드에 레이아웃의 인스턴스(xml레이아웃 작성시에는 리소스 ID)를 넘겨주는 형태이다.

원래대로 하자면 아래와 같다.

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.widget.TextView;

public class MainActivity extends Activity {
   @Override
   public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      LinearLayout MyLinearLayout = new LinearLayout(this);
      TextView MyText = new TextView(this);
      MyLinearLayout.setOrientation(LinearLayout.VERTICAL);
      MyText.setText("Hello Android!");
      setContentView(MyLinearLayout);
   }

   @Override
   public boolean onCreateOptionsMenu(Menu menu) {
      getMenuInflater().inflate(R.menu.activity_main, menu);
      return true;
   }
}

1번째의 TextView위젯의 인스턴스를 바로 setContentView메소드의 맴버로 넘길수있는 이유는 레이아웃이나 흔히 텍스트뷰나 버튼같은 위젯도 똑같이 뷰이기때문이다.

다시한번 강조하지만 위의 방식으로 xml문서를 거치지 않고 코드로 레이아웃을 작성하는 방식은 절대 권장되는 방식이 아니다.


Comments