直接上代码
fun FragmentActivity.displaysFullEditTextView2() {
val fragmentActivity = this
KeyboardUtils.addKeyboardToggleListener(
fragmentActivity,
object : KeyboardUtils.SoftKeyboardToggleListener {
override fun onToggleSoftKeyboard(isVisible: Boolean) {
if (isVisible) {
val focusedView = fragmentActivity.currentFocus
if (focusedView != null && focusedView is EditText) {
val rect2 = Rect()
fragmentActivity.window.decorView.getWindowVisibleDisplayFrame(rect2)
val focusBottom = rect2.bottom
val editViewInContainerBottom = focusedView.bottom
if (editViewInContainerBottom > focusBottom) {
val distance = editViewInContainerBottom - focusBottom
fragmentActivity.window.decorView.scrollTo(
0,
distance + KEYBOARD_PADDING_WITH_EDIT
)
}
}
} else {
fragmentActivity.window.decorView.scrollTo(0, 0)
}
}
}
)
}
- 原理就是拿到屏幕获得焦点的editText
val focusedView = fragmentActivity.currentFocus
if (focusedView != null && focusedView is EditText) {}
- 判断一番后(0.0),平移整个rootView
fragmentActivity.window.decorView.scrollTo(
0,
distance + KEYBOARD_PADDING_WITH_EDIT
)