android中实现editext搜索完成自动关闭软键盘

 更新时间:2023年10月06日 14:44:53   作者:mob649e8153b214  
在Android应用开发中,经常会遇到需要在EditText中输入内容,并通过搜索按钮进行搜索的场景,通常情况下,当用户点击搜索按钮后,我们希望关闭软键盘以提供更好的用户体验,本文将介绍如何在Android中实现EditText搜索完成后自动关闭软键盘的功能

在Android应用开发中,经常会遇到需要在EditText中输入内容,并通过搜索按钮进行搜索的场景。通常情况下,当用户点击搜索按钮后,我们希望关闭软键盘以提供更好的用户体验。本文将介绍如何在Android中实现EditText搜索完成后自动关闭软键盘的功能。

关键步骤

要实现EditText搜索完成后关闭软键盘的功能,我们需要完成以下几个关键步骤:

1、在EditText中监听搜索按钮的点击事件。
2、在搜索按钮点击事件中关闭软键盘。

下面我们将逐步介绍如何完成这些步骤。

监听搜索按钮的点击事件

在Android中,我们可以通过给EditText设置OnEditorActionListener来监听搜索按钮的点击事件。具体步骤如下:

1、在布局文件中定义EditText和搜索按钮。

<EditText
    android:id="@+id/editText"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:imeOptions="actionSearch" />
<Button
    android:id="@+id/searchButton"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="搜索" />

2、在Activity或Fragment中获取EditText并设置OnEditorActionListener。

EditText editText = findViewById(R.id.editText);
Button searchButton = findViewById(R.id.searchButton);
editText.setOnEditorActionListener(new TextView.OnEditorActionListener() {
    @Override
    public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
        if (actionId == EditorInfo.IME_ACTION_SEARCH) {
            // 在这里处理搜索逻辑
            return true;
        }
        return false;
    }
});

在onEditorAction方法中,我们可以根据actionId判断是否为搜索按钮点击事件。如果是,我们可以在其中处理搜索逻辑。

关闭软键盘

要关闭软键盘,可以使用InputMethodManager类。具体步骤如下:

1、在Activity或Fragment中获取InputMethodManager对象。

InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);

2、在搜索按钮点击事件中调用hideSoftInputFromWindow方法关闭软键盘。

editText.setOnEditorActionListener(new TextView.OnEditorActionListener() {
    @Override
    public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
        if (actionId == EditorInfo.IME_ACTION_SEARCH) {
            // 关闭软键盘
            imm.hideSoftInputFromWindow(editText.getWindowToken(), 0);
            // 在这里处理搜索逻辑
            return true;
        }
        return false;
    }
});

在hideSoftInputFromWindow方法中,我们需要传入一个参数windowToken,它表示当前焦点所在的窗口。我们可以使用EditText的getWindowToken方法获取该参数。

完整示例代码

下面是一个完整的示例代码,演示了如何实现EditText搜索完成后关闭软键盘的功能。

public class MainActivity extends AppCompatActivity {
    private EditText editText;
    private Button searchButton;
    private InputMethodManager imm;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        editText = findViewById(R.id.editText);
        searchButton = findViewById(R.id.searchButton);
        imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
        editText.setOnEditorActionListener(new TextView.OnEditorActionListener() {
            @Override
            public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
                if (actionId == EditorInfo.IME_ACTION_SEARCH) {
                    // 关闭软键盘
                    imm.hideSoftInputFromWindow(editText.getWindowToken(), 0);
                    // 处理搜索逻辑
                    Toast.makeText(MainActivity.this, "搜索:" + editText.getText().toString(), Toast.LENGTH_SHORT).show();
                    return true;
                }
                return false;
            }
        });
        searchButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // 关闭软键盘
                imm.hideSoftInputFromWindow(editText.getWindowToken(), 0);
                // 处理搜索逻辑
                Toast.makeText(MainActivity.this, "搜索:" + editText.getText().toString(), Toast.LENGTH_SHORT).show();
            }
        });
    }
}

总结

通过以上步骤,我们可以实现在EditText搜索完成后关闭软键盘的功能。这样可以提升用户体验,让用户更加专注于搜索结果。

到此这篇关于android中实现editext搜索完成自动关闭软键盘的文章就介绍到这了,更多相关android中editext自动关闭软键盘内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • NestScrollView嵌套RecyclerView实现淘宝首页滑动效果

    NestScrollView嵌套RecyclerView实现淘宝首页滑动效果

    这篇文章主要介绍了NestScrollView嵌套RecyclerView实现淘宝首页滑动效果,主要实现淘宝首页嵌套滑动,中间tab吸顶效果,以及介绍NestScrollView嵌套RecyclerView处理滑动冲突的方法,需要的朋友可以参考下
    2021-12-12
  • 基于自定义Toast全面解析

    基于自定义Toast全面解析

    下面小编就为大家带来一篇基于自定义Toast全面解析。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-10-10
  • Android实现登录注册页面(上)

    Android实现登录注册页面(上)

    这篇文章主要为大家详细介绍了Android实现登录注册页面,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-04-04
  • Flutter持久化存储之数据库存储(sqflite)详解

    Flutter持久化存储之数据库存储(sqflite)详解

    这篇文章主要给大家介绍了关于Flutter持久化存储之数据库存储的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者使用Flutter具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-03-03
  • Android GridView仿微信添加多图效果

    Android GridView仿微信添加多图效果

    这篇文章主要为大家详细介绍了Android GridView仿微信添加多图效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-05-05
  • Flutter Widget之NavigationBar使用详解

    Flutter Widget之NavigationBar使用详解

    这篇文章主要为大家介绍了Flutter Widget之NavigationBar使用详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-12-12
  • Android编程之图片相关代码集锦

    Android编程之图片相关代码集锦

    这篇文章主要介绍了Android编程之图片相关代码集锦,实例总结了大量Android图片操作相关代码,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-11-11
  • Android dataBinding与ListView及事件详解

    Android dataBinding与ListView及事件详解

    这篇文章主要介绍了Android dataBinding与ListView及事件详解的相关资料,需要的朋友可以参考下
    2016-10-10
  • Android 安全加密:对称加密详解

    Android 安全加密:对称加密详解

    本文主要介绍Android 安全加密对称加密,这里整理了详细的资料及介绍凯撒密码和对称密码的资料,有兴趣的小伙伴可以参考下
    2016-09-09
  • Android开发使用Handler的PostDelayed方法实现图片轮播功能

    Android开发使用Handler的PostDelayed方法实现图片轮播功能

    这篇文章主要介绍了Android开发使用Handler的PostDelayed方法实现图片轮播功能,结合实例形式分析了Android基于Handler的PostDelayed方法实现图片轮播功能的具体步骤与相关操作技巧,需要的朋友可以参考下
    2017-12-12

最新评论