美文网首页
Kotlin 中显示和隐藏键盘

Kotlin 中显示和隐藏键盘

作者: 因为我的心 | 来源:发表于2023-12-12 11:01 被阅读0次

    1、发生的原因:

    1、我们希望在第一次进入页面的时候,不弹起软键盘;
    2、当前页面手动点击弹起软键盘,离开当前页,去别的页面,关闭弹起软键盘;

    解决:我们在Activity或者Fragment的基类中,直接写,调用即可。

    2、首次进入页面,键盘不弹起,键盘弹起不挤压布局变形;

            <activity android:name=".ui.activity.login.LoginActivity"
                android:screenOrientation="portrait"
                android:configChanges="orientation|screenSize|locale"
                android:windowSoftInputMode="adjustNothing"
                />
    

    3、Activity中控制键盘的显示和隐藏

    abstract class BaseActivity<VM : BaseViewModel, VB : ViewBinding> : BaseVmVbActivity<VM, VB>() {
        private val imm: InputMethodManager? by lazy { getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager? }
    
        abstract override fun initView(savedInstanceState: Bundle?)
    
    
    
        override fun onPause() {
            super.onPause()
            //隐藏键盘
            hideSoftInput()
        }
    
    
        /**
         * 隐藏键盘
         */
        fun hideSoftInput() {
            this?.currentFocus?.let {
                imm?.hideSoftInputFromWindow(it.windowToken, 0)
            }
        }
        /**
         * 显示键盘
         */
        fun showSoftInput() {
            this?.currentFocus?.let {
                imm?.showSoftInput(it, 0)
            }
        }
    }
    

    4、Fragment中控制键盘的显示和隐藏

    abstract class BaseFragment<VM : BaseViewModel, VB : ViewBinding> : BaseVmVbFragment<VM, VB>() {
    
        abstract override fun initView(savedInstanceState: Bundle?)
    
        /**
         * 懒加载 只有当前fragment视图显示时才会触发该方法
         */
        override fun lazyLoadData() {}
    
        override fun onPause() {
            super.onPause()
            //隐藏键盘
            hideSoftInput()
        }
    
    
        /**
         * 隐藏键盘
         */
        fun hideSoftInput() {
            val imm = context?.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
            imm.hideSoftInputFromWindow(view?.windowToken, 0)
        }
        /**
         * 显示键盘
         */
        fun showSoftInput() {
            val imm = context?.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
            imm.showSoftInput(view, InputMethodManager.SHOW_IMPLICIT)
        }
    }
    

    相关文章

      网友评论

          本文标题:Kotlin 中显示和隐藏键盘

          本文链接:https://www.haomeiwen.com/subject/obdvgdtx.html