안드로이드는 UI의 구성을 XML로 정의하여 생성한다. 아래는 UI를 위한 XML인 map_legend_item.xml 파일이다.
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" > <LinearLayout android:paddingHorizontal="15dp" android:layout_width="match_parent" android:layout_height="54dp" android:gravity="center_vertical" android:orientation="horizontal"> <Switch android:id="@+id/swLayerVisibility" android:layout_weight="0" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <geoservice.nexgen.maplegend.LegendSingleSymbol android:id="@+id/lssItem" android:layout_width="36dp" android:layout_height="36dp" /> <Space android:layout_width="5dp" android:layout_height="1px" /> <TextView android:layout_weight="1" android:id="@+id/tvLayerName" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="@dimen/normal_text_size" android:textStyle="bold" android:text="LayerName" /> </LinearLayout> </LinearLayout>
위의 XML을 통해 View를 생성하는 코드는 다음과 같다.
for( ... ) { val itemLayout = inflater.inflate(R.layout.map_legend_item, null, false) itemLayout.findViewById<TextView>(R.id.tvLayerName).setText(title) ... mainLayout.addView(itemLayout) }
위의 코드 중 inflater는 다음 3가지 방식 중 하나를 통해 생성된다.
val inflater = layoutInflater val inflater = LayoutInflater.from(this) val inflater = getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater
위의 코드를 통한 실제 결과는 다음과 같다.