2012-07-07 32 views
17

Pracuję nad aplikacją Android Menu z paskiem akcji, chcę umieścić menu rozwijane na pasku akcji, takie jak obecne w aplikacji Google Maps. Google Maps ActionBarMenu rozwijane na pasku czynności

Czy ktoś może mi pomóc? Jak to osiągnąć Proszę wskazać prosty tutorial, który mogę wykonać.

+0

Proszę sprawdzić swoje pytanie, odpowiedział lub przeformułować je w razie potrzeby. – JJD

+0

Proszę sprawdzić dokumentację Androida: http://developer.android.com/guide/topics/ui/actionbar.html#Dropdown –

Odpowiedz

11

Dodaj to do swojej działalności onCreate() metoda:

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

Ten przykład wymaga zasobu tablicy dla elementów listy:

RES/wartości/arrays.xml

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

Alternatywnie można utworzyć własny adapter i układ rozszerzony z SpinnerAdapter, aby wyświetlić bardziej zaawansowane lub dynamiczne elementy listy.

Aby wykonać działanie na Utwórz kod jeszcze wyżej, możesz również zmienić swoją aktywność, aby zaimplementować OnNavigationListener i dodać zastąpienie naNavigationItemSelected z kodem zwrotnym. Następnie zmień "callback" na "this" w metodzie setListNavigationCallbacks().

Należy zauważyć, że dla paska akcji należy kierować interfejs API 11+, w przeciwnym razie konieczne będzie dodanie kontroli wersji lub biblioteki pomocy technicznej.

1

Sprawdź ten link również jest pomocne Przykład 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); 

} 
Powiązane problemy