![article thumbnail image](https://blog.kakaocdn.net/dn/c49QY0/btrtJBSdNgf/fsLyBs59fqhd1V6C23m000/img.jpg)
728x90
📌 TextView 란?
- 사용자에게 전달하고자 하는 문자열을 표시하는 View이다.
View 객체의 주소 값 가져오기
- Kotlin 코드에서 동적으로 View를 제어하기 위해서는 View 객체의 주소 값을 얻어와야 한다.
xml 코드
<TextView
android:id="@+id/textView"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
위 xml 코드에서 TextView의 주소 값 즉 id는 textView이다.
이를 코틀린 코드에서 동적으로 제어하기 위해서는 findViewById와 뷰 바인딩을 사용할 수 있다.
findViewById
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val text1 = findViewById<TextView>(R.id.textView1)
text1.text = "하이"
View Binding
class MainActivity : AppCompatActivity() {
private lateinit var binding: ActivityMainBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityMainBinding.inflate(layoutInflater)
val view = binding.root
setContentView(view)
binding.button1.text = "하이"
findViewById 와 View Binding의 차이에 대해서는 이전 포스팅에서 관련 글을 작성했다.
https://jminie.tistory.com/141
안드로이드 [Kotlin] - 뷰 바인딩 (View Binding)
📌 왜 View Binding? Kotlin의 장점 중 하나는 findViewById를 쓰지 않아도 되는 점이다. kotlin extension으로 바로 접근이 가능했다. 그러나 코틀린 익스텐션이 deprecated 되었다. https://developer.android...
jminie.tistory.com
TextView의 기본 주요 속성
- text : 보여줄 문자열
- lines : 문자열의 라인수
- textColor : 표시되는 문자열 색상
- textSize : 표시되는 문자열 크기
- textAppearance : 표시되는 문자열 형식
📌 Button 이란?
- 사용자가 클릭하면 개발자가 만든 코드를 동작시켜 주는 View
- Button은 문자열을 표시하는 Button과 이미지를 표시하는 ImageButton 이 있다.
Button의 주요 속성
- text : Button의 문자열을 설정한다.
- srcCompat : ImageButton의 이미지를 설정한다.
xml 코드
<Button
android:id="@+id/button1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="버튼 1번" />
<ImageButton
android:id="@+id/imageButton1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:srcCompat="@mipmap/ic_launcher" />
Kotlin 기반 안드로이드에서의 이벤트 처리
- Kotlin 기반 안드로이드에서 이벤트 처리는 자바 기반 프로젝트와 동일하다.
- 이벤트와 관련된 클래스를 구현하고 객체를 생성한 다음 메서드를 통해 View에 설정하면 된다.
- 하지만 코틀린에서는 추가적으로 이벤트와 관련된 메서드 대부분은 고차 함수로도 제공이 된다.
정리하자면 여러 View에 대한 처리를 동시에 할 경우에는 Listener를 사용하고 각각 따로 처리할 때는 고차 함수를 이용하면 편하다.
Kotlin MainActivity 코드
import android.graphics.Color
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.view.View
import com.example.viewbasic.databinding.ActivityMainBinding
class MainActivity : AppCompatActivity() {
private lateinit var binding: ActivityMainBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityMainBinding.inflate(layoutInflater)
val view = binding.root
setContentView(view)
binding.button1.text = "하이"
binding.button2.setBackgroundColor(Color.BLACK)
// 버튼에 리스너를 설정한다.
binding.button1.setOnClickListener(listener1)
binding.imageButton1.setOnClickListener(listener2)
binding.button2.setOnClickListener(listener3)
binding.button3.setOnClickListener(listener3)
binding.button4.setOnClickListener {
binding.textView1.text = "다섯 번재 버튼을 눌렀습니다." // 코틀린은 리스너를 설정하는 방법을 고차함수로도 제공한다.
}
}
// 버튼을 클릭하면 동작하는 리스터 객체
val listener1 = View.OnClickListener {
binding.textView1.text = "첫 번째 버튼을 눌렀습니다."
}
val listener2 = View.OnClickListener {
binding.textView1.text = "두 번째 버튼을 눌렀습니다."
}
// 여러 뷰들을 하나의 리스너에서 처리 하겠다 하면 View.OnClickListener 방식으로 하는 것이 좋다.
val listener3 = View.OnClickListener {
when (it.id) { // 사건이 발생한 객체의 주소값이 it 으로 들어옴
binding.button2.id -> binding.textView1.text = "세 번째 버튼을 눌렀습니다."
binding.button3.id -> binding.textView1.text = "네 번째 버튼을 눌렀습니다."
}
}
}
'Android' 카테고리의 다른 글
안드로이드 [Kotlin] - RecyclerView에서 ListAdapter와 DiffUtil 사용기 (0) | 2022.03.27 |
---|---|
안드로이드 [Kotlin] - LiveData로 계산기 만들기 (0) | 2022.03.27 |
안드로이드 [Kotlin] - RecyclerView로 랜덤한 색상으로 사각형 채워보기 (0) | 2022.03.25 |
안드로이드 [Kotlin] - Activity에서 Fragment 로 drawable 전송 (ViewPager2, Tablayout 이용) (0) | 2022.02.27 |
안드로이드 [Kotlin] - 뷰 바인딩 (View Binding) (0) | 2022.02.20 |