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

ax6ht2ek  于 12个月前  发布在  Android
关注(0)|答案(1)|浏览(81)

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

view.setOnClickListener {
            val imm = context?.getSystemService(Activity.INPUT_METHOD_SERVICE) as InputMethodManager?
            imm?.toggleSoftInput(InputMethodManager.HIDE_IMPLICIT_ONLY, 0)

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

        }

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

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


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

override fun onResume() {
        super.onResume()
        (activity as AppCompatActivity).actionBar?.hide()
        (activity as AppCompatActivity).supportActionBar?.hide()

    }


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

ANDROID_MIN_SDK_VERSION=23
ANDROID_TARGET_SDK_VERSION=33
ANDROID_COMPILE_SDK_VERSION=33
KOTLIN_VERSION = 1.6.10

问题:

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

kmpatx3s

kmpatx3s1#

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

fun hideActionBarIfKeyboardVisible() {
     ViewCompat.setOnApplyWindowInsetsListener(window.decorView) { view, insets ->
         val imeVisible = insets.isVisible(WindowInsetsCompat.Type.ime())
         
         if(imeVisible){
             supportActionBar?.hide()
         }
         
         ViewCompat.onApplyWindowInsets(view, insets)
     }
 }

字符串

相关问题