diff --git a/app/src/main/java/com/gh/gamecenter/qa/comment/NewCommentFragment.kt b/app/src/main/java/com/gh/gamecenter/qa/comment/NewCommentFragment.kt index 96162eb350..f78a5606a2 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/comment/NewCommentFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/comment/NewCommentFragment.kt @@ -5,6 +5,7 @@ import android.app.Activity import android.app.Dialog import android.content.Context import android.content.Intent +import android.os.Build import android.os.Bundle import android.util.DisplayMetrics import android.view.LayoutInflater @@ -13,6 +14,8 @@ import android.view.inputmethod.InputMethodManager import android.widget.* import androidx.core.content.ContextCompat import androidx.core.os.bundleOf +import androidx.core.view.ViewCompat +import androidx.core.view.WindowInsetsCompat import androidx.fragment.app.Fragment import androidx.lifecycle.Observer import androidx.recyclerview.widget.RecyclerView @@ -305,8 +308,17 @@ open class NewCommentFragment : ListFragment commentContainer?.layoutParams = layoutParams } - mKeyboardHeightProvider = KeyboardHeightProvider(activity) - view.post { mKeyboardHeightProvider?.start() } + // 平板上的导航方式改成按键时,使用 KeyboardHeightProvider 的 PopupWindow 会拦截掉所有的触摸事件 + // 换成在 Android 5.1 以后监听 WindowInsets 的实现 + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { + ViewCompat.setOnApplyWindowInsetsListener(requireActivity().window.decorView) { _: View?, insets: WindowInsetsCompat -> + onKeyboardHeightChanged(insets.getInsets(WindowInsetsCompat.Type.ime()).bottom, 0) + insets + } + } else { + mKeyboardHeightProvider = KeyboardHeightProvider(activity) + view.post { mKeyboardHeightProvider?.start() } + } val emptyHint = mCachedView?.findViewById(R.id.reuseNoneDataTv) emptyHint?.text = "这里还没有人评论噢~" emptyHint?.setTextColor(R.color.background_white.toColor(requireContext()))