라이브 텍스트 필드의 키보드가 올라가면 아이폰과 동일하게 화면이 위로 밀려 올라가게 수정
This commit is contained in:
@@ -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<ActivityLiveRoomBinding>(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<ActivityLiveRoomBinding>(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()
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user