只重寫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