2013-02-27 52 views
3

我正在使用搜索小部件在我的應用程序上實現搜索界面。我做不是計劃支持任何API級別< 11(蜂窩)。在搜索活動中,我想覆蓋onKeyDown()以在用戶按下搜索鍵時展開搜索小部件,並在提交查詢文本時將其最小化。當查詢被提交Android:menuItem.expandActionView()on API level <14

@Override 
public boolean onSearchRequested() { 
    if (mSearchMenuItem != null) { 
     mSearchMenuItem.expandActionView(); 
    } 
    return false; 
} 

和:

這是很容易通過調用來完成

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; 
    }); 

的問題是,無論是摺疊和展開是在API級別14引入如前所述我希望早在API級別11提供支持,並且在不調用新API方法的情況下實現相同功能時遇到問題。

我想:

@Override 
public boolean onSearchRequested() { 
    searchView.setIconifiedByDefault(false); 
    //and also called 
    searchView.requestFocusFromTouch(); 
} 

但是這根本就不是在所有做任何事情(被任何東西我的意思是,如果它已經是searchwidget保持倒塌

因爲我保持參考。菜單項,我也試過:

@Override 
public boolean onSearchRequested() { 
    SearchActivity.this.onOptionsItemSelected(mSearchMenuItem); 
} 

,但沒有在所有無論是做任何事情,我想最後一件事是:

@Override 
public boolean onSearchRequested() { 
    searchMenu.getActionView().performClick(); 
    return false; 
} 

但這也是不行的。

關於我能做什麼來提供與menuItem.collapseActionView()menuItem.expandActionView()相同的功能而不犧牲兼容性的任何想法?

回答

0

你總是取決於當前運行的版本差異化解決方案的選項:

int sdk = android.os.Build.VERSION.SDK_INT; 
if(sdk < android.os.Build.VERSION_CODES.HONEYCOMB) { 
// pre honeycomb 
} else { 
// honeycomb and post 
} 

我知道這可能不是你在尋找什麼,但它可能讓你的一些方式。

1

您可以使用MenuItemCompat靜態方法。例如:

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    getMenuInflater().inflate(R.menu.menu_search, menu); 

    MenuItem menuItem = menu.findItem(R.id.action_search); 
    MenuItemCompat.expandActionView(menuItem); 
    SearchView searchView = (SearchView) MenuItemCompat.getActionView(menuItem); 
    ... 
} 

更多信息:http://developer.android.com/reference/android/support/v4/view/MenuItemCompat.html

19

這適用於API級別10爲擴大例如的ActionView SearchView

MenuItemCompat.expandActionView(mSearchMenuItem); 
+2

這應該是被接受的答案。 – dtrejogo 2014-08-27 19:33:06

相關問題