XML - View, ViewGroup
2024. 4. 8. 20:53ㆍIT/Android
728x90
<정리>
View - Button, TextView처럼 사용자와 상호작용할 수 있는 모든 인터페이스를 의미하며 뷰 혹은 위젯이라고 부른다.
ViewGroup - View, ViewGroup 객체들을 담을 수 있는 컨테이너로 레이아웃이라고 부르는데, 이 역시 사용자와 상호작용 하는 인터페이스이므로 뷰의 일종이다.
XML의 레이아웃 파일에서는 각각의 뷰들이 어떤 레이아웃 컨테이너에 속하는지와 해당 컨테이너 내에서 어떻게 배치되는지를 지정하는 제약을 정의해야 한다. 따라서 뿌리가 되는 하나의 컨테이너를 선언하고, 해당 컨테이너의 하위 그룹으로 뷰들을 정의하는 게 일반적이다.
XML의 레이아웃의 설정은 엑티비티에서 onCreate() 메서드를 오버라이드 하면서 가장 먼저 출력될 레이아웃의 리소스 참조를 setContentView()의 인자로 전달한다.
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
}
}
각각의 뷰들은 서로를 식별하기 위한 고유한 ID를 갖고 있어야 하는데, 여기서 @기호는 해당 문자열을 추후에 참조할 수 있는 리소스의 형태인 정수로 변환하는 기능을 하고, +기호는 변환된 정수를 가지고 새로운 리소스를 생성하여 R.java에 등록하는 기능을 한다.
<TextView
android:id="@+id/myTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="0"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
R.java에 등록된 리소스는 아래와 같이 참조가 가능하여 프로퍼티의 변경 혹은 이벤트를 설정할 수 있다.
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val myTextView = findViewById<Button>(R.id.myTextView)
myTextView.setOnClickListener {
myTextView.text = "Clicked!"
}
}
728x90
'IT > Android' 카테고리의 다른 글
XML - ViewBinding, Customised Button In Android (0) | 2024.04.11 |
---|---|
XML - LinearLayout, DatePickerDialog (0) | 2024.04.09 |
Jetpack Compose - WorkManager Practice (0) | 2024.04.03 |
Jetpack Compose - WorkManager (0) | 2024.04.03 |
Jetpack Compose - Room, DataStore Practice (0) | 2024.03.29 |