2012-04-10 14 views
40

こんにちは、searchView内にテキストを入力し、searchViewウィジェットをフォーカス/拡大する必要があります。Androidにフォーカスする方法ActionBar searchView

これは私が試したものですが、それは

@Override 
public boolean onCreateOptionsMenu(final Menu menu) { 
... 
    SearchView searchView = (SearchView) menu.findItem(R.id.menu_search).getActionView(); 
    searchView.setQuery(this.filtro, false); 
    searchView.setFocusable(true); 
    searchView.requestFocus(); 
    searchView.requestFocusFromTouch(); 

答えて

88

searchView.setIconified(false)を使用してみてください動作しません。これは私のために働いた:

public void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    ActionBar actionBar = getActionBar(); 
    SearchView searchView = new SearchView(this); 
    actionBar.setCustomView(searchView); 
    actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM); 
    searchView.setQuery("test",true); 
    searchView.setFocusable(true); 
    searchView.setIconified(false); 
    searchView.requestFocusFromTouch(); 
} 
+0

ニート。 'onCreateOptionsMenu'をオーバーライドしてxmlsを設定するよりもずっときれいです。 – bompf

+3

"しかし私はすでに' setIconifiedByDefault(false) 'を呼び出しています。 「これは私には当てはまらないはずです。私のようにはしないでください、子供たち。テールを1時間追跡するのではなく、 'setIconified(false)'を呼び出します。 –

+0

奇妙ですが、 'setIconified(false)'は実際に仕事をしています! – WindRider

4

これは別の解決策です。

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    getMenuInflater().inflate(R.menu.main_menu, menu); 
    MenuItem menu_search = menu.findItem(R.id.menu_search); 


    menu_search.setOnActionExpandListener(new OnActionExpandListener() { 
     @Override 
     public boolean onMenuItemActionCollapse(MenuItem item) { 
      // Do something when collapsed 
      return true; // Return true to collapse action view 
     } 

     @Override 
     public boolean onMenuItemActionExpand(MenuItem item) { 
      //get focus 
      item.getActionView().requestFocus(); 
      //get input method 
      InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); 
      imm.toggleSoftInput(0, InputMethodManager.HIDE_NOT_ALWAYS); 
      return true; // Return true to expand action view 
     } 
    }); 
    return true; 
} 
+0

ありがとう、仲間!他の何十回も失敗した試行後、あなたのバージョンのキーボードトグルメソッドだけがActionBarSherlockの検索ビューで正しく機能しました。 – whyleee

+0

item.expandActionView();私には十分です。 :) –

+0

例外java.lang.UnsupportedOperationExceptionの後:これはサポートされていない、MenuItemCompat.setOnActionExpandListener()を使用してコードを少し変更しましたが、何も起こりませんでした。 – CoolMind

2

これが私の作品:

 @Override 
     public boolean onMenuItemActionExpand(MenuItem item) 
     { 
      if (sm.isMenuShowing()) { 
       sm.toggle(); 
      } 
      searchView.setIconified(true); 
      KeyEvent event = new KeyEvent(KeyEvent.ACTION_DOWN, 32); 
      searchView.onKeyDown(32, event); 
      return true; 
     } 
0
searchView.setQuery("typeAnything",true); 
searchView.setFocusable(true); 

は、トリックを行います。私にとって

+0

私にとっては十分ではありませんでした(私はandroid.support.v7.widget.SearchViewを使用します)。 – CoolMind

1

次作品:

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    ... 
    MenuItem miSearch = menu.findItem(R.id.menu_search); 
    SearchView mSearchView = (SearchView) miSearch.getActionView(); 

    mSearchView.setOnSearchClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      mSearchView.setFocusable(true); 
      mSearchView.requestFocusFromTouch(); 
     } 
    }); 

私はandroid.support.v7.widget.SearchViewを使用しています。 mSearchView.setIconified(false);を設定しようとすると、無限ループに入りました。

+1

これも私のために働いた。私は 'android.support.v7.widget.SearchView'を使用しています。ついに2日後に1つの答えが働きます! :)私はまた、追加: 'searchView.setIconified(false);' – Mohsen

+1

ありがとう、@モーセン!はい、あなたは正しい、時にはAndroidはあまりにも迷惑です。がんばろう! – CoolMind

関連する問題