只重写onBackPressed这样的:
@Override
public void onBackPressed() {
if (searchView.isShown()){
searchView.onActionViewCollapsed(); //collapse your ActionView
searchView.setQuery("",false); //clears your query without submit
isClosed = true; //needed to handle closed by back
} else{
super.onBackPressed();
}
}
和你onCreateOptionsMenu会膨胀mSearchView这样的:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
getMenuInflater().inflate(R.menu.menu_search, menu);
mSearchView = (SearchView) menu.findItem(R.id.menu_action_search).getActionView();
mSearchView.setOnQueryTextListener(this);
mSearchView.setOnSearchClickListener(this);
mSearchView.setOnCloseListener(this);
isClosed = true;
return true;
}
你们班有这样的实施:
public class myActivity extends FragmentActivity implements
SearchView.OnQueryTextListener, View.OnClickListener, SearchView.OnCloseListener {
,你还需要:
@Override
public void onClick(View view) {
isClosed = false;
}
@Override
public boolean onClose() {
isClosed = true;
return false;
}
您将需要“mSearchView”和活动“isClosed”两个全局变量。
这是一个非常受欢迎的答案http://stackoverflow.com/questions/1109022/how-to-close-hide-the-android-soft-keyboard – jmishra 2012-03-09 05:26:26
它不会帮助他,他需要拦截后面键盘上的键 – dor506 2012-03-09 06:05:17
这个答案应该很有名。还有很多其他答案需要大量的复杂和变通办法,但这些办法可能并不总是可以实现的。我感谢你的问题和答案。这正是我所需要的。我希望你能得到更多的赞扬,你应得的。 – acrespo 2014-07-01 20:58:38