2012-04-10 36 views
40

Xin chào tôi cần đặt một số văn bản bên trong searchView và tập trung/mở rộng tiện ích searchView.Android cách tập trung tìm kiếm ActionBarView

đây là những gì tôi đã cố gắng nhưng nó không hoạt động

@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(); 

Trả lời

88

Hãy thử sử dụng searchView.setIconified(false). Điều này phù hợp với tôi:

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

Gọn gàng. Có vẻ sạch hơn nhiều so với việc ghi đè 'onCreateOptionsMenu' và thiết lập xml. – bompf

+3

"Nhưng tôi đã gọi' setIconifiedByDefault (false) '," bạn nói. "Điều này không được áp dụng cho tôi," bạn nói. Đừng như tôi, bọn trẻ. Gọi 'setIconified (false)' thay vì theo đuôi của bạn trong một giờ. –

+0

Lạ nhưng 'setIconified (false)' thực sự là công việc! – WindRider

4

Đây là một giải pháp khác.

@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

Cảm ơn, bạn đời! Chỉ phiên bản của phương pháp chuyển đổi bàn phím của bạn mới hoạt động chính xác với chế độ xem tìm kiếm của ActionBarSherlock, sau hàng chục lần thử không thành công khác. – whyleee

+0

item.expandActionView(); là đủ cho tôi. :) –

+0

Sau khi ngoại lệ 'java.lang.UnsupportedOperationException: Điều này không được hỗ trợ, sử dụng MenuItemCompat.setOnActionExpandListener()' Tôi đã thay đổi mã một chút, nhưng không có gì xảy ra. – CoolMind

2

này làm việc cho tôi:

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

sẽ làm các trick.

+0

Đối với tôi điều đó là không đủ (tôi sử dụng android.support.v7.widget.SearchView). – CoolMind

1

Đối với tôi các công việc sau:

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

tôi sử dụng android.support.v7.widget.SearchView. Khi cố gắng thiết lập mSearchView.setIconified(false); nó được nhập vào một vòng lặp vô hạn.

+1

Điều này cũng làm việc cho tôi. Tôi đang sử dụng 'android.support.v7.widget.SearchView' Cảm ơn bạn. Sau hai ngày cuối cùng một câu trả lời hoạt động! :) Tôi cũng đã thêm: 'searchView.setIconified (false);' – Mohsen

+1

Cảm ơn, @Mohsen! Có, bạn là đúng, đôi khi Android là quá khó chịu. Chúc may mắn! – CoolMind

Các vấn đề liên quan