안드로이드/데이터 입출력

안드로이드 xml View

김어찐 2022. 6. 20. 23:29
728x90

지금까지 예제는 layout 폴더에 있는 xml 파일을 통해 화면을 구성하였다.
이는 Activity가 처음 나타날 때의 모습을 설정하게 된다.
만약 실행 중 View를 만들어 추가할 경우에는 코드를 통해 View를 만들어 추가해줘야 한다.
LayoutInflater를 사용하면 xml로 만든 화면 모양을 View 객체로 만들어 사용할 수 있다.

 

layoutInflater.inflate 메서드 : layoutInflater.inflate 메서드를 사용하면 XML을 통해 View 객체를 만들 수 있다.

val sub2 = layoutInflater.inflate(R.layout.layout_sub2, null)
val sub3 = layoutInflater.inflate(R.layout.layout_sub3, container)

package com.example.xml

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import kotlinx.android.synthetic.main.activity_main.*
import kotlinx.android.synthetic.main.layout_sub1.view.*

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        // View 객체를 생성한다
        val sub1 = layoutInflater.inflate(R.layout.layout_sub1,null)
        val sub2 = layoutInflater.inflate(R.layout.layout_sub2,null)
        val sub3 = layoutInflater.inflate(R.layout.layout_sub3,container)

        sub1.run {
            sub1_btn.setOnClickListener {
                sub1_text.text = "sub1의 버튼을 눌렀습니다."
                textView.text = "sub1의 버튼을 눌렀습니다."
            }
        }
        button.setOnClickListener {
            container.addView(sub1)
            container.addView(sub2)
        }
        button2.setOnClickListener {
            container.removeView(sub1)
            container.removeView(sub2)
            // container에 직접 지정한 layout은 삭제되지 않음
//            container.removeView(sub3)
        }
    }
}

728x90