【问题标题】:close listener of searchview in layout is not working Android布局中搜索视图的关闭侦听器无法正常工作
【发布时间】:2017-02-20 06:15:57
【问题描述】:

我正在构建 android 应用程序,其中我在工具栏下方嵌入了一个搜索视图。请参阅屏幕截图。但是当我点击搜索图标时,我的键盘出现了,但是当我点击搜索视图的关闭图标时,键盘并没有消失。关闭侦听器不起作用,并且无法使用操作展开或折叠侦听器,因为它不是菜单项。那么我应该如何让键盘消失。请指导。

 simpleSearchView.setOnCloseListener(new SearchView.OnCloseListener() {
        @Override
        public boolean onClose() {
            hideKeyboard(getActivity());
            return false;
        }
    });

【问题讨论】:

  • 我已发帖请查收

标签: android searchview


【解决方案1】:

您可以通过获取对 [x] 按钮的引用,然后在其上设置 onClick 侦听器来实现此目的。在 onClickListener 中,您可以添加逻辑来隐藏键盘。

The code below was obtained from this answer

// Catch event on [x] button inside search view
int searchCloseButtonId = searchView.getContext().getResources()
                .getIdentifier("android:id/search_close_btn", null, null);
ImageView closeButton = (ImageView) this.searchView.findViewById(searchCloseButtonId);
// Set on click listener
closeButton.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
       // Manage this event.
    }
});

onClick(View v)里面你可以像这样调用隐藏键盘的方法

private void hideKeyboard(){
    View view = this.getCurrentFocus();
    if (view != null) {
        InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
        imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
}

【讨论】:

  • 如果使用compat搜索视图,可以直接使用findViewById(R.id.search_close_btn)
  • 为我工作。谢谢。
  • 我收到了 NPE java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.ImageView.setOnClickListener(android.view.View$OnClickListener)' on a null object reference
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-14
  • 2017-06-08
  • 1970-01-01
  • 2021-01-31
相关资源
最近更新 更多