dan*_*c05 3 search android backwards-compatibility menuitem
我正在使用搜索小部件在我的应用程序上实现搜索界面.我不打算支持任何API等级<11(Honeycomb).在搜索活动中,我想覆盖onKeyDown()以在用户按下搜索键时展开搜索小部件,并在提交查询文本时将其最小化.
这很容易通过调用:
@Override
public boolean onSearchRequested() {
if (mSearchMenuItem != null) {
mSearchMenuItem.expandActionView();
}
return false;
}
Run Code Online (Sandbox Code Playgroud)
并在提交查询时:
searchView.setOnQueryTextListener(new OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
//Do nothing, results for the string supplied are already shown.
//Just collapse search widget
mSearchMenu.collapseActionView();
return false;
}
@Override
public boolean onQueryTextChange(String newText) {
//do other stuff
return false;
});
Run Code Online (Sandbox Code Playgroud)
问题是崩溃和扩展都是在API级别14中引入的.如前所述,我希望尽可能提供API级别11的支持,而且我无法在不调用新的API方法的情况下实现相同的功能.
我试过了:
@Override
public boolean onSearchRequested() {
searchView.setIconifiedByDefault(false);
//and also called
searchView.requestFocusFromTouch();
}
Run Code Online (Sandbox Code Playgroud)
但这根本就没有做任何事情(我所说的任何事情,如果已经存在,则searchwidget仍然会崩溃.
由于我保留了对menuItem的引用,我也尝试过:
@Override
public boolean onSearchRequested() {
SearchActivity.this.onOptionsItemSelected(mSearchMenuItem);
}
Run Code Online (Sandbox Code Playgroud)
但这根本没有做任何事情,我尝试的最后一件事是:
@Override
public boolean onSearchRequested() {
searchMenu.getActionView().performClick();
return false;
}
Run Code Online (Sandbox Code Playgroud)
但这也是不行的.
什么我可以做些什么来提供相同的功能的任何想法menuItem.collapseActionView()和menuItem.expandActionView(),而不必牺牲兼容性?
小智 19
这适用于API级别10,用于扩展ActionView,例如SearchView
MenuItemCompat.expandActionView(mSearchMenuItem);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3056 次 |
| 最近记录: |