以编程方式在按钮单击和触摸外部时隐藏 Android 软键盘

Java

管理 Android 软键盘

使用 Android 应用程序通常需要用户通过虚拟键盘进行输入。在布局中有 EditText 和 Button 的情况下,有效管理键盘变得至关重要。具体来说,在输入文本并单击按钮后,您可能希望隐藏键盘以改善用户体验。

本文将提供一个简单实用的示例,说明当用户与键盘以外的区域交互时如何以编程方式关闭 Android 软键盘。通过遵循概述的步骤,您可以增强 Android 应用程序的可用性和界面。

命令 描述
getSystemService 按名称检索系统级服务,例如用于处理输入方法的InputMethodManager。
hideSoftInputFromWindow 请求隐藏当前正在接受输入的软键盘窗口。
getWindowToken 返回与视图关联的窗口令牌,这是隐藏键盘所必需的。
onTouchEvent 处理触摸屏运动事件,此处用于隐藏外部触摸时的键盘。
findViewById 查找并返回具有给定 ID 的视图,用于引用 EditText 和 Button 等 UI 元素。
setOnClickListener 设置单击视图时将调用的回调,用于触发键盘隐藏。

了解实施

提供的脚本演示了如何在与 UI 交互时以编程方式隐藏 Android 软键盘,特别是在输入文本后 字段并单击 。 Java 和 Kotlin 示例利用了几个关键的 Android 组件和方法。这两个脚本都首先导入必要的类,例如 , Context, ,以及各种 UI 组件。在里面 方法, 用于链接 EditText 和 从布局到代码。这 然后在按钮上设置方法来触发 单击时的功能。

在这两种实现中, 功能用途 检索 服务。方法 hideSoftInputFromWindow 然后被调用 的 隐藏软键盘。此外, 重写方法以确保当用户触摸输入字段外部时隐藏键盘。这种方法可以防止键盘不必要地遮挡视图,从而改善用户体验。通过使用这些方法并适当地处理触摸事件,脚本可以有效地管理 Android 应用程序中的软键盘行为。

在输入字段之外单击和触摸按钮时隐藏 Android 软键盘

在 Android 开发中使用 Java

import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.view.inputmethod.InputMethodManager;
import android.widget.Button;
import android.widget.EditText;
 
public class MainActivity extends Activity {
    private EditText editText;
    private Button button;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        editText = findViewById(R.id.editText);
        button = findViewById(R.id.button);
 
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                hideKeyboard();
            }
        });
    }
 
    @Override
    public boolean onTouchEvent(MotionEvent event) {
        hideKeyboard();
        return super.onTouchEvent(event);
    }
 
    private void hideKeyboard() {
        InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
        imm.hideSoftInputFromWindow(editText.getWindowToken(), 0);
    }
}

使用 Kotlin 处理 Android 中的软键盘关闭

使用 Kotlin 进行 Android 应用程序开发

import android.app.Activity
import android.content.Context
import android.os.Bundle
import android.view.MotionEvent
import android.view.View
import android.view.inputmethod.InputMethodManager
import android.widget.Button
import android.widget.EditText
 
class MainActivity : Activity() {
    private lateinit var editText: EditText
    private lateinit var button: Button
 
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
 
        editText = findViewById(R.id.editText)
        button = findViewById(R.id.button)
 
        button.setOnClickListener { hideKeyboard() }
    }
 
    override fun onTouchEvent(event: MotionEvent): Boolean {
        hideKeyboard()
        return super.onTouchEvent(event)
    }
 
    private fun hideKeyboard() {
        val imm = getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
        imm.hideSoftInputFromWindow(editText.windowToken, 0)
    }
}

探索键盘管理的先进技术

除了隐藏 Android 软键盘的基本方法之外,开发人员还可以实现更高级的技术来增强用户体验。其中一种方法涉及使用 在多个 UI 组件上检测触摸事件并相应地隐藏键盘。这种方法可确保每当用户与屏幕之外的任何部分进行交互时,键盘都会被隐藏。 。此外,管理键盘可见性可以与聚焦逻辑相结合,其中焦点从键盘上移开。 到另一个组件,提示键盘自动隐藏。

另一种技术是使用 在 。该侦听器可以检测到 失去焦点,随后隐藏键盘。此方法在涉及多个输入字段的表单或数据输入应用程序中特别有用。此外,为了获得更无缝的用户体验,开发人员可以采用 SoftKeyboardStateWatcher,一个自定义实现,用于跟踪键盘的可见性状态变化并做出相应的响应。通过集成这些先进技术,开发人员可以创建更直观、用户友好的 Android 应用程序。

  1. 如何检测键盘何时显示或隐藏?
  2. 您可以使用 跟踪键盘的可见性变化。
  3. 当用户滚动时是否可以自动隐藏键盘?
  4. 是的,您可以实施 在滚动视图上以在滚动期间隐藏键盘。
  5. 我可以在以下情况下以编程方式显示键盘吗 是否专注?
  6. 是的,使用 时显示键盘 获得焦点。
  7. 当用户按下后退按钮时如何隐藏键盘?
  8. 覆盖 方法并使用隐藏键盘 。
  9. 我可以自定义键盘布局吗?
  10. 是的,Android 允许通过自定义键盘布局 。
  11. 将键盘隐藏在片段中的最佳方法是什么?
  12. 使用 得到 在一个片段中。
  13. 在片段之间切换时如何隐藏键盘?
  14. 实施一个 使用侦听器在切换期间隐藏键盘。
  15. 是否可以设置键盘隐藏的动画?
  16. 是的,您可以为包含以下内容的视图设置动画 创建平滑的隐藏效果。

有效管理 Android 软键盘对于创建直观的应用程序至关重要。通过使用getSystemService检索InputMethodManager并使用hideSoftInputFromWindow隐藏键盘,开发人员可以控制键盘何时出现和消失。实现触摸和单击侦听器进一步完善了此控制,确保键盘在与其他 UI 元素交互时适当隐藏。这些技术通过防止键盘遮挡重要内容或 UI 元素来增强用户体验。