Android

[안드로이드/데이터입출력] 코드를 이용해 View 객체 생성

gangmini 2023. 4. 29. 00:25
반응형
  • 코드를 통해 View 객체를 생성  ->  layout에 추가 
  • View 객체 생성시 생성자에 Context() 객체 설정
    • Context : 어떠한 작업을 하기 위한 정보를 갖고 있는 객체를 통칭  Ex) 그래픽작업 -> 해당 디바이스가 지원하는 색상, 가로세로길이, bit 정보 등 다양한 정보 필요함. 이때 이런 정보를 담고 있는 객체를 Graphic Context 라 부를 수 있음
    • 안드 개발시 Context를 구분할 필요는 없고 지정만 잘 해주면 됨
  • Activity가 Context를 상속받고 있기 때문에 this 를 넣어주면 되고, 그 외에는 Context를 구하는 다양한 메서드를 통해 설정

 

LayoutParam

  • View가 배치될 때 필요한 공통 속성을 설정할 수 있는 객체
  • 가로, 세로 길이 설정 필요 
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    binding = ActivityMainBinding.inflate(layoutInflater) // 뷰바인딩 객체
    val view = binding.root //뷰바인딩을 통해 레이아웃과 뷰가 결합 -> .root 를 통해 View 객체만를 뽑아내는(?)
    setContentView(view)

    // 가로 세로 길이 지정 (어디 배치할지에 따라 맞는 LinearLayout 고르면 됨) *어떤 버전에서는 이거 안 하면 오류남
    val param1 = LinearLayout.LayoutParams(
        LinearLayout.LayoutParams.MATCH_PARENT,
        LinearLayout.LayoutParams.WRAP_CONTENT
    )

    val btn1 = Button(this)
    btn1.text = "추가된 버튼입니다."
    btn1.layoutParams = param1

    val img1 = ImageView(this)
    img1.layoutParams = param1
    img1.setImageResource(R.drawable.img6)

    btn1.setOnClickListener {
        binding.textView.text = "추가된 버튼을 눌렀스빈다."
    }


    binding.button.setOnClickListener {
        binding.container.addView(btn1) //추가
        binding.container.addView(img1)

    }

    binding.button2.setOnClickListener {
        binding.container.removeView(btn1) //제거
        binding.container.removeView(img1)
    }

}

반응형