안드로이드/데이터 입출력
안드로이드 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