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

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

管理 Android 软键盘

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

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

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

了解实施

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

在这两种实现中, hideKeyboard 功能用途 getSystemService 检索 InputMethodManager 服务。方法 hideSoftInputFromWindow 然后被调用 getWindowTokenEditText 隐藏软键盘。此外, 17 号 重写方法以确保当用户触摸输入字段外部时隐藏键盘。这种方法可以防止键盘不必要地遮挡视图,从而改善用户体验。通过使用这些方法并适当地处理触摸事件,脚本可以有效地管理 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 软键盘的基本方法之外,开发人员还可以实现更高级的技术来增强用户体验。其中一种方法涉及使用 TouchListeners 在多个 UI 组件上检测触摸事件并相应地隐藏键盘。这种方法可确保每当用户与屏幕之外的任何部分进行交互时,键盘都会被隐藏。 EditText。此外,管理键盘可见性可以与聚焦逻辑相结合,其中焦点从键盘上移开。 EditText 到另一个组件,提示键盘自动隐藏。

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

有关管理 Android 软键盘的常见问题

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

总结要点

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