마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

XML을 자바코드로 바꾸는 법좀 알려주세요 XML코드있어요..!

0 추천

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:orientation="horizontal" >

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:background="#0000ff" >
        </LinearLayout>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:orientation="vertical" >

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:background="#ff0000" >
            </LinearLayout>

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:background="#000000" >
            </LinearLayout>
        </LinearLayout>
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:background="#00ff00" >
    </LinearLayout>

</LinearLayout>

 

 

일단 이게 제가 만든 XML이구요..

 

이렇게 나오는데 이 XML을 JAVA코드로만 이용해서 해야되는데...

 

package com.cookandroid.chapter5_7;

import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.widget.LinearLayout;

public class Chapter5_7Activity extends Activity {

 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  LinearLayout.LayoutParams params1 = new LinearLayout.LayoutParams(
    LinearLayout.LayoutParams.MATCH_PARENT,
    LinearLayout.LayoutParams.MATCH_PARENT, 1);

  LinearLayout baseLayout1 = new LinearLayout(this);
  baseLayout1.setOrientation(LinearLayout.VERTICAL);
  baseLayout1.setBackgroundColor(Color.BLUE);

  setContentView(baseLayout1, params1);

 }

 protected void onCreate1(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  LinearLayout.LayoutParams params2 = new LinearLayout.LayoutParams(
    LinearLayout.LayoutParams.MATCH_PARENT,
    LinearLayout.LayoutParams.MATCH_PARENT, 1);

  LinearLayout baseLayout2 = new LinearLayout(this);
  baseLayout2.setOrientation(LinearLayout.VERTICAL);
  baseLayout2.setBackgroundColor(Color.DKGRAY);

  setContentView(baseLayout2, params2);

 }

}

이렇게 해봤는데 이렇게 해야되는지 아님 한개의 OnCreate안에 두개를 해야되는지..

중복 리니어레이아웃은 어떻게 해야되는지 정말 궁금합니다 ㅜㅜ 가르쳐주세요..!!!

익명사용자 님이 2013년 10월 7일 질문
View와 ViewGroup 공부해 보시면 도움이 되겠네요.

1개의 답변

+1 추천
일단 activity의 life cycle의 개념이 정의가 되지 않으신 상태 이신것 같습니다. 그리고 자바의 override에 대한 개념도 공부를 하셔야 할것 같습니다.

일단 위의 Chapter5_7Activity 는 Activity class를 extends 즉 상속을 받았습니다 Activity class안에는 onStart, onCreate, onResume..... onDestroy 등 activity가 처음 생만들어지기 시작할때 부터 삭제 될까지 불려지는 함수들이 정의가 되어 있습니다. 여기서 우리가 activity를 사용할때 가장 많이 사용하는 부분은 onCreate 하나 일것입니다. 위에 보시면 onCreate위에 @Override라고 되어 있는 부분은 onCreate라는 함수는 확장을 받은 부모 클래스인 Activity class안에 정의 되어 있으며 onCreate를 재정의 하겠다. onCreate안에 할일을 추가 하겠다는 의미 입니다. onCreate는 시스템 내부에서 알아서 call이 되기 때문에 onCreate1과 같이 이상한이름으로 정의를 하신다면 onCreate1은 call 이 안될것입니다.

자 결론을 말씀드리면 onCreate안에 다 때려박으십시오.

그리고 LinearLayout.LayoutParams 은 layout의 넓이 높이 등등을 정의를 할수 있습니다. eclipse의 자동완성 기능을 잘 활용해 보시고 내용을 보면 각각의 파라미터들이 어떤 의미인지 알것 입니다.

참고로 oncreate내에 setContentView(R.layout.xxxx)을 통해 레이아웃을 셋팅후에 안에 들어갈 View 들을 생성, 속성 정의등을 해주셔야 합니다.
싸만코 (2,260 포인트) 님이 2013년 10월 8일 답변
...