Archives
Recent Posts
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
Today
Total
관리 메뉴

안드로이드 개발자의 창고

[28일차 Android] Include Other Layout 본문

Computer/Android

[28일차 Android] Include Other Layout

Wise-99 2023. 6. 10. 03:12

 

 

 

출처 : 안드로이드 앱스쿨 2기 윤재성 강사님 수업 PPT

 

 

 

📖 Include Other Layout

  • Layout 에서 다른 Layout 을 포함시킬 수 있는 개념이다.
  • 다수의 화면을 구성할 때 중복되는 부분이 있을 경우 사용한다.

주요 속성

  • layout : 삽입할 화면의 데이터를 정의한 layout 파일

 

 

 

예제 코드

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity" >

    <TextView
        android:id="@+id/textView3"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="activity_main.xml"
        android:textAppearance="@style/TextAppearance.AppCompat.Large" />

    <include
        android:id="@+id/secondLayout"
        layout="@layout/second"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

    <include
        android:id="@+id/thirdLayout"
        layout="@layout/third"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />
</LinearLayout>

 

 

 

second.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
        android:id="@+id/textView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="second.xml"
        android:textAppearance="@style/TextAppearance.AppCompat.Large" />
</LinearLayout>

 

 

 

third.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
        android:id="@+id/textView2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="third.xml"
        android:textAppearance="@style/TextAppearance.AppCompat.Large" />
</LinearLayout>

 

 

 

 

MainActivity.kt

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import com.test.android09_includeotherlayout.databinding.ActivityMainBinding
import com.test.android09_includeotherlayout.databinding.SecondBinding
import com.test.android09_includeotherlayout.databinding.ThirdBinding

class MainActivity : AppCompatActivity() {

    lateinit var activityMainBinding: ActivityMainBinding
//    lateinit var secondBinding: SecondBinding
//    lateinit var thirdBinding: ThirdBinding

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        activityMainBinding = ActivityMainBinding.inflate(layoutInflater)
//        secondBinding = SecondBinding.inflate(layoutInflater)
//        thirdBinding = ThirdBinding.inflate(layoutInflater)
        setContentView(activityMainBinding.root)

        activityMainBinding.textView3.text = "첫번째 문자열 입니다"
//        secondBinding.textView.text = "두번째 문자열 입니다"
//        thirdBinding.textView2.text = "세번째 문자열 입니다"

        activityMainBinding.secondLayout.textView.text = "두번째 문자열 입니다"
        activityMainBinding.thirdLayout.textView2.text = "세번째 문자열 입니다"
    }
}

코드 해석

  • 주석 처리된 코드로 바인딩하여 secondBinding과 thirdBinding의 textView의 text를 변경하고자 하면 변경되지 않는다.
  • Include Other Layout을 사용하여 ActivityMainBinding을 했기 때문에 include를 통해 View에 접근하여 변경해야 한다.

주석 처리된 코드로 text 변경 시도 - include를 통해 View에 접근하여 변경 시도