2012-07-09 34 views
13

tôi muốn làm một thanh tác vụ trông như thế này:Android Action Bar với Kiện Tìm Kiếm Xem

ActionBar

và tôi không thể làm điều này.

Tôi đã cố gắng sử dụng thứ thu gọn được mô tả here, nhưng đó không phải là điều tôi muốn.

  • Trước hết SearchView không hiển thị cho đến khi người dùng nhấn biểu tượng tìm kiếm .. nhưng tôi muốn hiển thị ngay sau khi hoạt động bắt đầu.
  • Thứ hai sau khi SearchView xuất hiện tất cả các biểu tượng hành động khác biến mất .. Nhưng tôi muốn chúng luôn hiển thị mọi lúc.
  • Và nó chỉ hoạt động cho android 3 trở lên, tôi muốn nó cho android 2 trở lên, vì vậy tôi đang sử dụng ActionBarSherlock.

Ví dụ: thanh tác vụ trong bản đồ google trông tương tự như những gì tôi muốn.

Ai đó có thể tư vấn cho tôi cách đạt được điều này không?

+0

Đây là thanh hành động bản đồ google mà tôi nghĩ [google bản đồ] (http://vojtechbartos.com /mapyactionbar.png) –

+0

Điều bạn muốn là thêm chế độ xem tùy chỉnh vào thanh tác vụ của mình. Api Ref: http://developer.android.com/reference/android/app/ActionBar.html#setCustomView(int) Và gọi nó là: getActionbar.setCustomView (R.layout.mySearchbar); – andreasg

+2

Cảm ơn! :) Tôi đã làm nó chính xác như u đã nói .. Tôi đã tạo bố cục search_bar.xml với một EditText trong đó .. Sau đó, tôi viết 'actionBar = getSupportActionBar(); actionBar.setCustomView (R.layout.search_bar); actionBar.setDisplayShowCustomEnabled (true); 'vào phương thức onCreate trong hoạt động .. và nó hoạt động! Vì vậy ... thực sự cảm ơn người đàn ông u! :) –

Trả lời

6

Nếu bạn sử dụng ActionBarSherlock bạn phải làm smth như thế này

@Override 
public boolean onCreateOptionsMenu(com.actionbarsherlock.view.Menu menu) { 
    menu.add(0, 1, 1, R.string.ac_refresh).setIcon(R.drawable.ic_navigation_refresh).setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM); 
    menu.add(0, 2, 2, R.string.ac_settings).setIcon(R.drawable.ic_action_settings).setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM); 
    menu.add(0, 3, 3, R.string.ac_favourite).setIcon(isFavouriteChannel(channel) ? R.drawable.ic_rating_important : R.drawable.ic_rating_not_important).setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM); 
    menu.add(0, 4, 4, R.string.ac_search ).setIcon(R.drawable.ic_action_search).setActionView(R.layout.action_search) 
      .setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM | MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW); 

    return super.onCreateOptionsMenu(menu); 
} 

Hãy xem setActionView (R.layout.action_search) - đây là quan điểm văn bản của bạn trong file xml. Nếu bạn muốn các biểu tượng hành động khác của bạn luôn luôn, bạn nên sử dụng MenuItem.SHOW_AS_ACTION_ALWAYS

+0

Đặt nó thành ** LUÔN LUÔN ** là gợi ý tốt, Cảm ơn :) –

14

ActionbarSherlock là một thư viện tuyệt vời. Bản phát hành mới nhất (4.2.0) có phương pháp giúp bạn hiển thị chế độ xem tìm kiếm khi hoạt động bắt đầu SearchView.setIconified (boolean);

Vì vậy, nếu bạn muốn thực hiện quan điểm tìm kiếm của bạn luôn luôn có thể nhìn thấy bạn nên sử dụng đoạn mã sau:

@Override 
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { 

    //Create the search view 
    SearchView searchView = new SearchView(getSherlockActivity().getSupportActionBar().getThemedContext()); 
    searchView.setQueryHint("Search for countries…"); 
    searchView.setIconified(false); 

    menu.add("Search") 
      .setIcon(R.drawable.abs__ic_search) 
      .setActionView(searchView) 
      .setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS); 


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