2012-07-07 38 views
17

Tôi đang làm việc trên Menu ứng dụng Android với Thanh tác vụ, tôi muốn đặt menu thả xuống trong thanh tác vụ giống như trình bày trong ứng dụng Google Maps. Google Maps ActionBarTrình đơn thả xuống trên thanh Hành động

Ai đó có thể giúp tôi? Làm thế nào để đạt được điều này Xin vui lòng trỏ đến một số hướng dẫn dễ dàng mà tôi có thể làm theo.

+0

Vui lòng kiểm tra câu hỏi của bạn như trả lời hoặc nói lại nó nếu cần thiết. – JJD

+0

Vui lòng kiểm tra tài liệu Android: http://developer.android.com/guide/topics/ui/actionbar.html#Dropdown –

Trả lời

11

Thêm phần này vào hoạt động của bạn) phương pháp onCreate (:

// Adapter 
SpinnerAdapter adapter = 
     ArrayAdapter.createFromResource(this, R.array.actions, 
     android.R.layout.simple_spinner_dropdown_item); 

// Callback 
OnNavigationListener callback = new OnNavigationListener() { 

    String[] items = getResources().getStringArray(R.array.actions); // List items from res 

    @Override 
    public boolean onNavigationItemSelected(int position, long id) { 

     // Do stuff when navigation item is selected 

     Log.d("NavigationItemSelected", items[position]); // Debug 

     return true; 

    } 

}; 

// Action Bar 
ActionBar actions = getActionBar(); 
actions.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST); 
actions.setDisplayShowTitleEnabled(false); 
actions.setListNavigationCallbacks(adapter, callback); 

Ví dụ này đòi hỏi phải có một nguồn tài nguyên mảng cho các mục danh sách:

res/values ​​/ arrays.xml

<string-array name="actions"> 
    <item>Item 1</item> 
    <item>Item 2</item> 
    <item>Item 3</item> 
</string-array> 

Ngoài ra, bạn có thể tạo bộ điều hợp và bố cục của riêng bạn được mở rộng từ SpinnerAdapter để hiển thị các mục danh sách nâng cao hoặc động hơn.

Để thực hiện hoạt động trênSạo mã ngay cả khi bạn cũng có thể thay đổi Hoạt động của mình để triển khai OnNavigationListener và thêm ghi đè lênNavigationItemSelected bằng mã gọi lại. Sau đó thay đổi "callback" thành "this" trong phương thức setListNavigationCallbacks().

Xin lưu ý rằng bạn sẽ cần phải nhắm mục tiêu API 11+ cho thanh tác vụ, nếu không bạn sẽ cần thêm kiểm tra phiên bản hoặc thư viện hỗ trợ.

1

kiểm tra liên kết này cũng có thể nó là một ví dụ hữu ích Example link

GoogleMap map; 

TextView txt; 

String[] mapTypes={"Normal","Hybrid","Satellite","Terrain"}; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    map = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)) 
      .getMap(); 

    txt=(TextView)findViewById(R.id.textView1); 

//to set map Type 
    map.setMapType(GoogleMap.MAP_TYPE_NORMAL); 

//To set the marker on map on specific location using lat lag 
    // latitude and longitude 
    double latitude = 18.520430300000000000; 
    double longitude = 73.856743699999920000; 

    // create marker 
    MarkerOptions marker = new MarkerOptions().position(new LatLng(latitude, longitude)).title("My Location"); 

    // change color to the marker icon 
    marker.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_CYAN)); 

    // adding marker 
    map.addMarker(marker); 

    // Create an array adapter to populate dropdownlist 
    ArrayAdapter<String> adapter =new ArrayAdapter<String>(getBaseContext(), android.R.layout.simple_spinner_dropdown_item, mapTypes); 

    /** Enabling dropdown list navigation for the action bar */ 
    getActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_LIST); 

    /** Defining Navigation listener */ 
    ActionBar.OnNavigationListener navigationListener=new ActionBar.OnNavigationListener() { 

     @Override 
     public boolean onNavigationItemSelected(int itemPosition, long itemId) { 
      Toast.makeText(getBaseContext(), "U Select : "+mapTypes[itemPosition], Toast.LENGTH_SHORT).show(); 
      if (mapTypes[itemPosition].equals("Normal")) { 
       map.setMapType(GoogleMap.MAP_TYPE_NORMAL); 
      } 
      else if (mapTypes[itemPosition].equals("Hybrid")) { 
       map.setMapType(GoogleMap.MAP_TYPE_HYBRID); 
      } 
      else if (mapTypes[itemPosition].equals("Satellite")) { 
       map.setMapType(GoogleMap.MAP_TYPE_SATELLITE); 
      } 
      else if (mapTypes[itemPosition].equals("Terrain")) { 
       map.setMapType(GoogleMap.MAP_TYPE_TERRAIN); 
      } 
      return false; 
     } 
    }; 

    // Setting dropdown items and item navigation listener for the actionbar 
    getActionBar().setListNavigationCallbacks(adapter, navigationListener); 

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