본문 바로가기
안드로이드/데이터 입출력

안드로이드 xml View

by 김어찐 2022. 6. 20.
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

'안드로이드 > 데이터 입출력' 카테고리의 다른 글

안드로이드 sqlite 1  (0) 2022.06.23
안드로이드 assets  (0) 2022.06.22
안드로이드 파일 입출력  (0) 2022.06.21
안드로이드 Application Class  (0) 2022.06.21
안드로이드 코드 View  (0) 2022.06.20