2012-07-07 31 views
17

Sto lavorando a un menu dell'applicazione Android con la barra delle azioni, voglio mettere il menu a discesa nella barra delle azioni come quello presente nell'applicazione di Google Maps. Google Maps ActionBarMenu a discesa sulla barra delle azioni

Qualcuno può aiutarmi? Come raggiungere questo obiettivo Si prega di indicare alcuni semplici tutorial che posso seguire.

+0

Si prega di verificare la tua domanda come risposta o riformulare, se necessario. – JJD

+0

Controllare la documentazione di Android: http://developer.android.com/guide/topics/ui/actionbar.html#Dropdown –

risposta

11

Aggiungi questo alla vostra attività metodo 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); 

Questo esempio richiede una risorsa array per le voci di elenco:

res/valori/arrays.xml

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

In alternativa è possibile creare il proprio adattatore e il layout esteso da SpinnerAdapter per visualizzare elementi di elenco più avanzati o dinamici.

Per rendere ancora più ordinata l'attività sul codice onCrea, è possibile modificare l'attività per implementare OnNavigationListener e aggiungere l'override onNavigationItemSelected con il codice di richiamata. Quindi cambia "callback" in "this" nel metodo setListNavigationCallbacks().

Nota: è necessario utilizzare l'API 11+ come target per la barra delle azioni, altrimenti sarà necessario aggiungere il controllo della versione o una libreria di supporto.

1

controllare questo link inoltre è utile esempio 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); 

} 
Problemi correlati