java Activity不可调整大小时的键盘可见性侦听器

2fjabf4q  于 2023-02-07  发布在  Java
关注(0)|答案(1)|浏览(106)

我有一个Activity,这里有2个EditText,我已经应用了android:windowSoftInputMode="adjustNothing",当用户单击EditText时,软键盘打开以在其中输入一些值。我想将其他一些View的可见性设置为Gone时,软键盘打开,也当软键盘关闭从EditText上的后退按钮按下。然后我想将其他一些View的可见性设置为Visible
我已经尝试了几个解决方案,但他们不工作,由于adjustNothing适用于Activity。我也使用了以下键盘可见性观察库,但它也不工作,由于adjustNothing
implementation 'net.yslibrary.keyboardvisibilityevent:keyboardvisibilityevent:3.0.0-RC2'

qq24tv8q

qq24tv8q1#

您可以尝试将全局布局侦听器设置为“活动”的根视图,以检测视图高度的变化。当视图高度降低时,您可以假定键盘已打开。当视图高度增加时,您可以假定键盘已关闭。

val rootView = findViewById<View>(android.R.id.content)
    rootView.viewTreeObserver.addOnGlobalLayoutListener(object :
        ViewTreeObserver.OnGlobalLayoutListener {
        override fun onGlobalLayout() {
            val heightDiff = rootView.rootView.height - rootView.height
            if (heightDiff > dpToPx(this@YourActivity, 200f)) { // if more than 200 dp, it's probably a keyboard...
                // do something here
            } else {
                // do something here
            }
        }
    })
    
   
    fun dpToPx(context: Context, dp: Float): Int {
        return TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dp, context.resources.displayMetrics).toInt()
    }

相关问题