
Toast
Toast.makeText(context, "메시지 내용", Toast.LENGTH_SHORT).show()
- context: 현재 Activity 또는 Application의 컨텍스트(앱 환경 정보)
- "메시지 내용": 화면에 표시할 문자열
- Toast.LENGTH_SHORT 또는 Toast.LENGTH_LONG: 토스트 메시지 지속 시간
- LENGTH_SHORT: 약 2초간 표시
- LENGTH_LONG: 약 3.5~5초간 표시
- .show(): 토스트 메시지를 화면에 표시
Toast 커스텀 하기 (배경색, 위치 변경)
1. Toast 위치 변경
기본적으로 Toast는 화면 아래쪽에 뜨지만, 위치를 변경할 수도 있다.
val toast = Toast.makeText(this, "화면 중앙에 표시", Toast.LENGTH_SHORT)
toast.setGravity(Gravity.CENTER, 0, 0) // 중앙에 위치
toast.show()
- setGravity(Gravity.CENTER, 0, 0): 중앙에 표시하도록 설정
- Gravity.BOTTOM, Gravity.TOP 등을 사용해 원하는 위치로 조정 가능
2. 배경색 & 텍스트 색상 변경
val toast = Toast.makeText(this, "커스텀 Toast", Toast.LENGTH_SHORT)
val view = toast.view
view?.setBackgroundColor(Color.RED) // 배경색 변경
val text = view?.findViewById<TextView>(android.R.id.message)
text?.setTextColor(Color.WHITE) // 글자색 변경
toast.show()
→ 빨간 배경에 흰색 글자로 Toast가 표시된다.
3. 실행 결과
- 버튼을 누르면 "버튼이 눌렸습니다!" 같은 메시지가 표시됨.
- 뒤로가기 버튼을 한 번 누르면 "종료하려면 한 번 더 누르세요" 메시지가 뜸.
- 필요하면 setGravity()를 활용해 Toast의 위치도 조정 가능.
enableEdgeToEdge(), setContentView(), ViewCompat.setOnApplyWindowInsetsListener()
안드로이드 앱을 만들다 보면 상태바(Status Bar)와 네비게이션바(Navigation Bar)를 고려해서 화면을 확장하는 경우가 있다.
enableEdgeToEdge()와 ViewCompat.setOnApplyWindowInsetsListener()를 사용하면 앱의 UI가 시스템 바(상태바, 네비게이션바)까지 확장되도록 설정할 수 있다.
enableEdgeToEdge()
setContentView(R.layout.activity_main)
ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main)) { v, insets ->
val systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars())
v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom)
insets
enableEdgeToEdge()
- 안드로이드 14(API 34)부터 전체 화면을 시스템 바까지 확장하는 기능을 쉽게 설정할 수 있도록 나온 메서드다.
- 기본적으로 WindowCompat.setDecorFitsSystemWindows(window, false)를 적용하는 역할을 한다.
- 이걸 호출하면 앱 UI가 시스템 바(상태바, 네비게이션바) 영역까지 확장된다.
setContentView(R.layout.activity_main)
- 액티비티에서 사용할 레이아웃(XML)을 화면에 표시할 때 사용한다.
- 즉, activity_main.xml을 현재 액티비티(MainActivity)의 UI로 설정하는 코드다.
ViewCompat.setOnApplyWindowInsetsListener()
- 시스템 바(상태바, 네비게이션바) 영역만큼 패딩을 추가하는 역할을 한다.
- WindowInsetsCompat.Type.systemBars()를 사용해서 상태바와 네비게이션바의 크기(여백)를 가져온 뒤, 해당 크기만큼 padding을 설정한다.
- 이렇게 하면 UI가 시스템 바를 고려해서 적절히 배치된다.
실행 결과
- 화면 전체가 시스템 바(상태바, 네비게이션바)까지 확장됨.
- 시스템 바의 높이만큼 패딩을 추가해서 UI가 겹치지 않도록 조정
'개발새발개발 > Kotlin' 카테고리의 다른 글
[Kotlin] 안드로이드 스튜디오 기본 컬러 정의하는 법(기본, Jetpack) (0) | 2025.03.23 |
---|---|
[Kotlin] 안드로이드 스튜디오 프로젝트 기본 구조 이해하기 (0) | 2025.03.17 |
[Kotlin] 안드로이드 앱의 구조 및 동작 원리, 자바가 아닌 코틀린을 사용하는이유 (1) | 2025.03.16 |
[Kotlin] 안드로이드 스튜디오 - ViewBinding을 활용한 스톱워치 앱만들기 (0) | 2025.03.14 |
[Kotlin] Kotlin 설치 및 개발 환경 구축하기(기본 셋팅) (0) | 2025.03.05 |