如何隐藏动作栏在android一旦SoftKeyboard显示

ax6ht2ek  于 2024-01-04  发布在  Android
关注(0)|答案(1)|浏览(100)

我看过these answers
我的androidManifest.xml文件包含:android:theme="@style/Theme.AppCompat.DayNight.NoActionBar" >
在我的一个片段中,我需要调用软键盘。只要我调用软键盘,动作栏就会出现,并且在那之后永远不会隐藏。在那个片段中,我有:

  1. view.setOnClickListener {
  2. val imm = context?.getSystemService(Activity.INPUT_METHOD_SERVICE) as InputMethodManager?
  3. imm?.toggleSoftInput(InputMethodManager.HIDE_IMPLICIT_ONLY, 0)
  4. (activity as AppCompatActivity).supportActionBar?.hide()
  5. }

字符串
如果输入区域之外的片段的一部分被点击(它确实如此),我希望它能隐藏键盘,并且隐藏动作栏(它没有)。
在这个片段中,有一个按钮。点击后,一个新的片段被加载。在新加载的片段的onCreateView中,我有:

  1. (activity as AppCompatActivity).supportActionBar?.hide()


在同一片段的onResume中,我有:

  1. override fun onResume() {
  2. super.onResume()
  3. (activity as AppCompatActivity).actionBar?.hide()
  4. (activity as AppCompatActivity).supportActionBar?.hide()
  5. }


但操作栏仍然存在。
我的Android SDK如下:

  1. ANDROID_MIN_SDK_VERSION=23
  2. ANDROID_TARGET_SDK_VERSION=33
  3. ANDROID_COMPILE_SDK_VERSION=33
  4. KOTLIN_VERSION = 1.6.10

问题:

我怎样才能强制操作栏保持隐藏状态,即使软键盘被调用?谢谢

kmpatx3s

kmpatx3s1#

我相信这个方法会解决你的问题。它基本上监听键盘的可见性,并隐藏动作栏,如果它是可见的,如下图所示。在你的活动中调用它

  1. fun hideActionBarIfKeyboardVisible() {
  2. ViewCompat.setOnApplyWindowInsetsListener(window.decorView) { view, insets ->
  3. val imeVisible = insets.isVisible(WindowInsetsCompat.Type.ime())
  4. if(imeVisible){
  5. supportActionBar?.hide()
  6. }
  7. ViewCompat.onApplyWindowInsets(view, insets)
  8. }
  9. }

字符串

相关问题