Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- Retrofit Kotlin
- DataBinding
- viewBinding
- dialogfragment singleton
- 위치정보확인
- 레트로핏2
- Android
- 인텐트란?
- recyclerview
- lifecycleScope
- 프로그래머스
- programmers
- 뷰바인딩
- ScrollView with ConstraintLayout
- 스크롤뷰 자식 뷰 높이 동적조절
- location System
- 레트로핏 MVVM
- Retrofit with MVVM
- 다이얼로그 크기조절
- 쉐어드
- 안드로이드
- 데이터바인딩
- java
- 다이얼로그 프래그먼트
- 레트로핏 코틀린
- NestedScrollView
- dialog fragment
- 리사이클러뷰
- ScrollView Child View Height Programmatically
- dialog resize
Archives
- Today
- Total
안드로이드 세계
[Android] 다이얼로그 크기조절하기(Dialog or Dialog Fragment Resize) 본문
안드로이드(Android)/코틀린(Kotlin)
[Android] 다이얼로그 크기조절하기(Dialog or Dialog Fragment Resize)
리안94 2021. 1. 11. 19:37커스텀 다이얼로그를 사용하다가 보면 원하는 크기대로 다이얼로그가 생성되지 않는다.
아래의 내용은 해당 커스텀 다이얼로그를 디바이스 크기 비율로 조절하는 법이다.
- 다이얼로그 프래그먼트
fun dialogFragmentResize(context: Context, dialogFragment: DialogFragment, width: Float, height: Float) {
val windowManager = context.getSystemService(Context.WINDOW_SERVICE) as WindowManager
if (Build.VERSION.SDK_INT < 30) {
val display = windowManager.defaultDisplay
val size = Point()
display.getSize(size)
val window = dialogFragment.dialog?.window
val x = (size.x * width).toInt()
val y = (size.y * height).toInt()
window?.setLayout(x, y)
} else {
val rect = windowManager.currentWindowMetrics.bounds
val window = dialogFragment.dialog?.window
val x = (rect.width() * width).toInt()
val y = (rect.height() * height).toInt()
window?.setLayout(x, y)
}
}
- 다이얼로그
fun dialogResize(context: Context, dialog: Dialog, width: Float, height: Float){
val windowManager = context.getSystemService(Context.WINDOW_SERVICE) as WindowManager
if (Build.VERSION.SDK_INT < 30){
val display = windowManager.defaultDisplay
val size = Point()
display.getSize(size)
val window = dialog.window
val x = (size.x * width).toInt()
val y = (size.y * height).toInt()
window?.setLayout(x, y)
}else{
val rect = windowManager.currentWindowMetrics.bounds
val window = dialog.window
val x = (rect.width() * width).toInt()
val y = (rect.height() * height).toInt()
window?.setLayout(x, y)
}
}
위의 방법으로 context를 매개변수로 받아와서 사용하여도 좋지만 확장 함수를 이용하게 된다면 더욱 편하게 작성할 수 있다.
- 다이얼로그 프래그먼트
fun Context.dialogFragmentResize(dialogFragment: DialogFragment, width: Float, height: Float) {
val windowManager = getSystemService(Context.WINDOW_SERVICE) as WindowManager
if (Build.VERSION.SDK_INT < 30) {
val display = windowManager.defaultDisplay
val size = Point()
display.getSize(size)
val window = dialogFragment.dialog?.window
val x = (size.x * width).toInt()
val y = (size.y * height).toInt()
window?.setLayout(x, y)
} else {
val rect = windowManager.currentWindowMetrics.bounds
val window = dialogFragment.dialog?.window
val x = (rect.width() * width).toInt()
val y = (rect.height() * height).toInt()
window?.setLayout(x, y)
}
}
- 다이얼로그
fun Context.dialogResize(dialog: Dialog, width: Float, height: Float){
val windowManager = getSystemService(Context.WINDOW_SERVICE) as WindowManager
if (Build.VERSION.SDK_INT < 30){
val display = windowManager.defaultDisplay
val size = Point()
display.getSize(size)
val window = dialog.window
val x = (size.x * width).toInt()
val y = (size.y * height).toInt()
window?.setLayout(x, y)
}else{
val rect = windowManager.currentWindowMetrics.bounds
val window = dialog.window
val x = (rect.width() * width).toInt()
val y = (rect.height() * height).toInt()
window?.setLayout(x, y)
}
}
사용할 때에는 다음과 같이 사용하면 된다.(확장 함수로 만들었다는 가정을 한다.)
- 다이얼로그 프래그먼트
class CustomDialogFragment : DialogFragment() {
override fun onResume() {
super.onResume()
context?.dialogFragmentResize(this@CustomDialogFragment, 0.9f, 0.9f)
}
}
- 다이얼로그
class CustomDialog(context: Context): Dialog(context) {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
context.dialogResize(this@CustomDialog, 0.9f, 0.9f)
}
}
디바이스의 가로 세로의 90%를 차지한 다이얼로그가 생성된다.
※ 다이얼로그 리사이즈 시 setContentView아래에 작성을 하여야 정상적으로 동작한다.
'안드로이드(Android) > 코틀린(Kotlin)' 카테고리의 다른 글
[Android] Recycler View - Step 4 (0) | 2021.01.19 |
---|---|
[Android] Recycler View - Step 3 (0) | 2021.01.16 |
[Android] Recycler View - Step 2 (0) | 2021.01.15 |
[Android] Recycler View - Step 1 (0) | 2021.01.15 |
[Android] 안드로이드 기기 위치정보 켜져있는지 여부확인하는 방법 (0) | 2021.01.12 |
Comments