코드상에서 실행해서 종종 레이아웃을 바꿔야 할 경우가 있다.

이럴 경우에는 java 파일 상에서 해결을 해 줘야 한다.

LinearLayout linear = (LinearLayout)findViewId(R.id.레이아웃아이디);
linear.setOrientation(LinearLayout.VERTICAL);

이런 식으로 바꿔주면 된다.

물론 레이아웃 뿐 아니라 다른 컴포넌트 역시 이런 식으로 바꿔주면 된다.
중첩 레이아웃은 레이아웃들의 조합을 말하고 있다.

레이아웃 자체가 View 클래스에서 파생 됨으로 이들은 얼마든 중첩되게 이용하여도 된다.

간단하게 살펴보면 아래 샘플 코드를 보면 된다.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical"
     >
   
    <TextView
     android:layout_width="fill_parent"
     android:layout_height="wrap_content"
     android:text="상위레이아웃"   
    />
    <TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
     >
  <TableRow>
     <TextView android:text ="1" />
     <TextView android:text ="2" />
     <TextView android:text ="3" />
 </TableRow>
 <TableRow>
     <TextView android:text ="3" />
     <TextView android:text ="2" />
     <TextView android:text ="1" />
 </TableRow>               
    </TableLayout>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
     >
 <TextView
     android:layout_width="fill_parent"
     android:layout_height="wrap_content"
     android:text="하위레이아웃"
 />
 </LinearLayout>
</LinearLayout>

여기에서 살펴보면 먼저 라이너 레이아웃이 먼저 붙고 그 아래 테이블 레이아웃 그리고 마지막으로 다시 라이너 레이아웃이 붙는다. 실행해보면 특성에 맞게 볼 수가 있다.

그 다음으로 페이지 전환 형식으로 구성해보면 다음과 같다

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical"
     >
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
         android:layout_width="fill_parent"
         android:layout_height="wrap_content"
         android:orientation="horizontal"
     >
     <Button
      android:id="@+id/btn1"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="1번"   
     />
     <Button
      android:id="@+id/btn2"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="2번"   
     />
     <Button
      android:id="@+id/btn3"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="3번"   
     />
    </LinearLayout>   
     <FrameLayout  xmlns:android="http://schemas.android.com/apk/res/android"
          android:layout_width="fill_parent"
          android:layout_height="fill_parent"
          android:orientation="vertical"
      >
       <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
          android:layout_width="fill_parent"
          android:layout_height="fill_parent"
          android:orientation="vertical"
          android:id="@+id/page1"
      >
    <TextView
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:text="1번 페이지"  
    />          
      </LinearLayout>
      <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
          android:layout_width="fill_parent"
          android:layout_height="wrap_content"
          android:visibility="invisible"
          android:id="@+id/page2"
         >
          <EditText
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:id="@+id/t_edit"
              android:text="2번 페이지"             
          />
          <Button
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:layout_alignRight="@id/t_edit"
              android:text="버튼"
          />
      </RelativeLayout>
      <TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
          android:layout_width="fill_parent"
          android:layout_height="wrap_content"
          android:visibility="invisible"
          android:id="@+id/page3"
         >
          <TableRow> android:text ="1" </TableRow>
          <TableRow> android:text ="2" </TableRow>
          <TableRow> android:text ="3" </TableRow>
      </TableLayout>
     </FrameLayout>
</LinearLayout>

main.xml 내용은 다음과 같이 하고 java 파일은 아래와 같이 입력하고 동작을 시켜보면 버튼을 누를 때 마다 다른 화면 처럼 지정한 레이아웃들이 보일 것이다.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical"
     >
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
         android:layout_width="fill_parent"
         android:layout_height="wrap_content"
         android:orientation="horizontal"
     >
     <Button
      android:id="@+id/btn1"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="1번"   
     />
     <Button
      android:id="@+id/btn2"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="2번"   
     />
     <Button
      android:id="@+id/btn3"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="3번"   
     />
    </LinearLayout>   
     <FrameLayout  xmlns:android="http://schemas.android.com/apk/res/android"
          android:layout_width="fill_parent"
          android:layout_height="fill_parent"
          android:orientation="vertical"
      >
       <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
          android:layout_width="fill_parent"
          android:layout_height="fill_parent"
          android:orientation="vertical"
          android:id="@+id/page1"
      >
    <TextView
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:text="1번 페이지"  
    />          
      </LinearLayout>
      <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
          android:layout_width="fill_parent"
          android:layout_height="wrap_content"
          android:visibility="invisible"
          android:id="@+id/page2"
         >
          <EditText
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:id="@+id/t_edit"
              android:text="2번 페이지"             
          />
          <Button
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:layout_alignRight="@id/t_edit"
              android:text="버튼"
          />
      </RelativeLayout>
      <TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
          android:layout_width="fill_parent"
          android:layout_height="fill_parent"
          android:visibility="invisible"
          android:id="@+id/page3"
         >
          <TableRow>
           <TextView android:text ="1" />
           <TextView android:text ="2" />
          </TableRow>
          <TableRow>
              <TextView android:text ="2" />
           <TextView android:text ="1" />
          </TableRow>
      </TableLayout>
     </FrameLayout>
</LinearLayout>