|
|
@@ -1,10 +1,15 @@
|
|
|
package com.adealink.weparty.im.session
|
|
|
|
|
|
+import androidx.core.view.WindowInsetsCompat
|
|
|
+import androidx.core.view.doOnPreDraw
|
|
|
+import androidx.core.view.updatePadding
|
|
|
import com.adealink.frame.base.fastLazy
|
|
|
import com.adealink.frame.log.Log
|
|
|
import com.adealink.frame.mvvm.view.viewBinding
|
|
|
import com.adealink.weparty.commonui.BaseFragment
|
|
|
import com.adealink.weparty.commonui.ext.dp
|
|
|
+import com.adealink.weparty.commonui.ext.fitSystemWindows
|
|
|
+import com.adealink.weparty.commonui.ext.onWindowInsets
|
|
|
import com.adealink.weparty.commonui.recycleview.itemdecoration.VerticalSpaceItemDecoration
|
|
|
import com.adealink.weparty.im.R
|
|
|
import com.adealink.weparty.im.databinding.FragmentSessionBinding
|
|
|
@@ -64,7 +69,25 @@ class SessionFragment : BaseFragment(R.layout.fragment_session) {
|
|
|
sessionPresenter?.setMessageListAdapter(sessionAdapter)
|
|
|
sessionPresenter?.setMessageRecycleView(binding.rvMessage)
|
|
|
|
|
|
+ fitWindow()
|
|
|
+ }
|
|
|
|
|
|
+ private fun fitWindow() {
|
|
|
+ // 关键:只在需要的时候设置
|
|
|
+ activity?.window?.fitSystemWindows(false)
|
|
|
+ // 内容布局处理键盘
|
|
|
+ binding.root.onWindowInsets { view, insets ->
|
|
|
+ val ime = insets.getInsets(WindowInsetsCompat.Type.ime())
|
|
|
+ val nav = insets.getInsets(WindowInsetsCompat.Type.navigationBars())
|
|
|
+
|
|
|
+ // 键盘显示时使用键盘高度,否则使用导航栏高度
|
|
|
+ val bottomInset = if (ime.bottom > 0) ime.bottom else nav.bottom
|
|
|
+ view.updatePadding(bottom = bottomInset)
|
|
|
+// binding.svContent.doOnPreDraw {
|
|
|
+// binding.svContent.smoothScrollTo(0, bottomInset)
|
|
|
+// }
|
|
|
+ insets
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
override fun loadData() {
|