美文网首页
如何在 Android 中检查软件键盘的可见性?

如何在 Android 中检查软件键盘的可见性?

作者: 安安_660c | 来源:发表于2022-07-22 09:50 被阅读0次

    键盘是任何 Android 应用程序的基本元素之一。通常,我们使用键盘从用户那里获取输入。在 Android 应用程序中使用的这些键盘称为软键盘,Android 系统为您提供键盘,用于在任何 EditText 或类似内容中获取用户的输入。此外,如果用户给出了输入,那么该键盘将从屏幕上变得不可见。因此,在本博客中,我们将学习如何检查软件键盘是否在 Android 应用程序中可见。如果它是可见的,那么如何使这个键盘不可见或如何关闭键盘。那么,让我们开始吧。

    在 Android Studio 中创建一个新项目并根据您的选择为其命名。就我而言,我使用HideKeyboard作为我的项目名称。

    和往常一样,在 Android Studio 中创建项目后,我们的下一个任务是添加应用程序的 UI。因此,在activity_main.xml文件中,添加以下代码:

    <?xml version = "1.0" encoding = "utf-8"?>
    <androidx.constraintlayout.widget.ConstraintLayout
            xmlns:android="http://schemas.android.com/apk/res/android"
            xmlns:app="http://schemas.android.com/apk/res-auto"
            xmlns:tools="http://schemas.android.com/tools"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:id="@+id/rootview"
            tools:context=".MainActivity">
        <EditText
                android:id="@+id/editext"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginTop="8dp"
                app:layout_constraintTop_toTopOf="parent"
                app:layout_constraintEnd_toEndOf="parent"
                android:layout_marginEnd="8dp"
                app:layout_constraintStart_toStartOf="parent"
                android:layout_marginStart="8dp">
        </EditText>
        <Button
                android:id="@+id/button"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Hide Keyboard"
                app:layout_constraintBottom_toBottomOf="parent"
                app:layout_constraintLeft_toLeftOf="parent"
                app:layout_constraintRight_toRightOf="parent"
                app:layout_constraintTop_toTopOf="parent"/>
    </androidx.constraintlayout.widget.ConstraintLayout>
    
    

    在为 UI 部分编写代码之后,现在让我们继续讨论应用程序的逻辑部分。

    所以,这里我们将使用viewTreeObserver的概念。在 viewTreeObserver 的帮助下,我们可以发现特定活动中的 viewGroup 是否有一些变化。之后,我们可以找到当前屏幕的高度,然后是键盘的高度,通过这个高度我们可以确定键盘是否可见。那么,让我们看一下MainActivity.kt文件的代码:

    class MainActivity : AppCompatActivity(), View.OnClickListener {
        lateinit var constraintLayout:ConstraintLayout
        override fun onCreate(savedInstanceState: Bundle?) {
            super.onCreate(savedInstanceState)
            setContentView(R.layout.activity_main)
            var button = findViewById<Button>(R.id.button)
            val editText = findViewById<EditText>(R.id.editext)
            editText.requestFocus()
            constraintLayout = findViewById(R.id.rootview)
            constraintLayout.viewTreeObserver.addOnGlobalLayoutListener {
                val rec = Rect()
                constraintLayout.getWindowVisibleDisplayFrame(rec)
    
                //finding screen height
                val screenHeight = constraintLayout.rootView.height
    
                //finding keyboard height
                val keypadHeight = screenHeight - rec.bottom
    
                if (keypadHeight > screenHeight * 0.15) {
                    Toast.makeText(this@MainActivity, "VISIBLE KEYBOARD", Toast.LENGTH_LONG).show()
                } else {
                    Toast.makeText(this@MainActivity, "NO KEYBOARD", Toast.LENGTH_LONG).show()
                }
            }
            button.setOnClickListener(this)
        }
        @RequiresApi(api = Build.VERSION_CODES.O)
        override fun onClick(v:View) {
            when (v.id) {
                R.id.button -> hideSoftkeybard(v)
            }
        }
    
        //function to hide keyboard
        private fun hideSoftkeybard(v:View) {
            val inputMethodManager = getSystemService(INPUT_METHOD_SERVICE) as InputMethodManager
            inputMethodManager.hideSoftInputFromWindow(v.windowToken, 0)
        }
    }
    
    

    在这里,如果在单击按钮时键盘可见,我们使用 hideSoftKeyboard 隐藏键盘。

    因此,最后,运行应用程序并在您的移动设备上查看输出。

    在这篇文章中,我们学习了如何检查键盘在屏幕上是否可见。此外,如果键盘可见,我们还有如何关闭它。

    作者:Admin MindOrks
    链接:How to check the visibility of software keyboard in Android?

    相关文章

      网友评论

          本文标题:如何在 Android 中检查软件键盘的可见性?

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