布局中搜索视图的关闭监听器不工作 Android
close listener of searchview in layout is not working Android
我正在构建 android 应用程序,我在其中嵌入了工具栏下方的搜索视图。请参阅屏幕截图。但是当我点击搜索图标时,我的键盘出现了,但是当我点击搜索视图的关闭图标时,键盘并没有消失。关闭侦听器不工作,不能使用动作展开或折叠侦听器,因为它不是菜单项。那么我应该如何让键盘消失。请指导。
simpleSearchView.setOnCloseListener(new SearchView.OnCloseListener() {
@Override
public boolean onClose() {
hideKeyboard(getActivity());
return false;
}
});
您可以通过获取对 [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);
}
我正在构建 android 应用程序,我在其中嵌入了工具栏下方的搜索视图。请参阅屏幕截图。但是当我点击搜索图标时,我的键盘出现了,但是当我点击搜索视图的关闭图标时,键盘并没有消失。关闭侦听器不工作,不能使用动作展开或折叠侦听器,因为它不是菜单项。那么我应该如何让键盘消失。请指导。
simpleSearchView.setOnCloseListener(new SearchView.OnCloseListener() {
@Override
public boolean onClose() {
hideKeyboard(getActivity());
return false;
}
});
您可以通过获取对 [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);
}