본문으로 바로가기

[상황]

  안드로이드 UI를 구현하다보면, xml 파일 내의 View 항목들이 어느세 엄!청!나!게 증가해 코드가 너무 복잡해지는 상황이 생기는데요.

  저는 심지어 안드로이드 스튜디오에서 warning 메세지를 받아보기도 했습니다

  (아마 노란 말풍선으로 '그만 추가하세요, 더 추가하면!! 성능에 좋지 않습니다'라는 의미였던... 기억이 가물가물 합니다).

  코딩의 편리성을 위해, 혹은 위계를 두어 정리/구현하고 싶은 경우 아래의 간단한 방법이 있음을 소개하고자 합니다.

 

[방법]

  변경 전 & 변경 후로 나누어 구분해 드리도록 하겠습니다.

 

변경전: main.xml                                               

         1. 상황 가정: main.xml속에는 현재 아래에 보이는 LinearLayout에 속한 View들 말고도 많은 항목들이 있을 것입니다.

                     

         2. 원하는 방향: LinearLayout속의 View들은 동일한 맥락을 지니므로, CheckBox들을 다른 xml파일을 만들어 나누어 보겠습니다.

(main.xml을 포함해 모든 xml을 쾌적하게 코딩하고, 관리하고 싶은 마음이 더 큽니다)

 

....

<LinearLayout
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="38dp"
    android:id="@+id/linearLayout">

    <CheckBox
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:text="@string/Bold"
        android:id="@+id/checkBox_Bold"
        android:checked="false" />

    <CheckBox
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:text="@string/Italic"
        android:id="@+id/checkBox_Italic" />

    <CheckBox
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:text="@string/UnderLine"
        android:id="@+id/checkBox_UnderLine" />


</LinearLayout>

...

 

블록처리가 된 부분을 다른 xml 파일로 보내줍니다(새 파일을 content_main.xml 로 이름지어보겠습니다.)

 

 

 

변경후                                                       

main.xml

content_main.xml  

(main.xml에 포함시킬 Layout)

...

 

<LinearLayout

     android:orientation="horizontal"
     
android:layout_width="match_parent"
     
android:layout_height="38dp"
     
android:id="@+id/linearLayout">
     <
include layout="@layout/content_main"/>
 </
LinearLayout>

 

...

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout>

.......


tools:showIn="@layout/main">

    <CheckBox
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:text="@string/Bold"
        android:id="@+id/checkBox_Bold"
        android:checked="false" />

    <CheckBox
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:text="@string/Italic"
        android:id="@+id/checkBox_Italic" />

    <CheckBox
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:text="@string/UnderLine"
        android:id="@+id/checkBox_UnderLine" />

</LinearLayout>

  [설명]

  원래 View들이 있던 자리에 아래와 같이 '한 줄'만 작성합니다.

  <include layout="@layout/content_main"/>(새로 만들어준 xml파일명)

 

  [설명]

  최상위 layout 속성에 아래와 같이 작성

  tools:showIn="@layout/main" (위 View들을 담을 xml파일명-여기선 main)

 

 

 끝.