diff --git a/app/src/main/java/kr/co/vividnext/sodalive/live/room/LiveRoomActivity.kt b/app/src/main/java/kr/co/vividnext/sodalive/live/room/LiveRoomActivity.kt index d7c90c2f..486567c9 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/live/room/LiveRoomActivity.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/live/room/LiveRoomActivity.kt @@ -47,6 +47,8 @@ import androidx.core.content.ContextCompat import androidx.core.graphics.toColorInt import androidx.core.graphics.withTranslation import androidx.core.net.toUri +import androidx.core.view.ViewCompat +import androidx.core.view.WindowInsetsCompat import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView import coil.transform.CircleCropTransformation @@ -219,6 +221,7 @@ class LiveRoomActivity : BaseActivity(ActivityLiveRoomB initAgora() super.onCreate(savedInstanceState) + applyKeyboardPanInsets() onBackPressedDispatcher.addCallback(this, onBackPressedCallback) this.roomId = intent.getLongExtra(Constants.EXTRA_ROOM_ID, 0) @@ -533,6 +536,24 @@ class LiveRoomActivity : BaseActivity(ActivityLiveRoomB } // endregion + private fun applyKeyboardPanInsets() { + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.S) { + return + } + + ViewCompat.setOnApplyWindowInsetsListener(binding.root) { v, insets -> + val systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars()) + val ime = insets.getInsets(WindowInsetsCompat.Type.ime()) + val imeVisible = insets.isVisible(WindowInsetsCompat.Type.ime()) + + v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom) + v.translationY = if (imeVisible) -ime.bottom.toFloat() else 0f + + insets + } + ViewCompat.requestApplyInsets(binding.root) + } + private fun secondToMillis(second: Float): Long { return (second * 1000).toLong() }