2012-11-11 6 views
5

sto creando un mapview osmdroid nel mio MapActivity.java e voglio aggiungere pulsanti & pop-up - so solo come questo viene fatto in .xml ma poiché questo MapView non utilizza alcuna .xml Sono perplesso su come posso posizionare i pulsanti (immagine) all'interno del mio codice java.Pulsanti oltre MapView

@Override 
public void onCreate(final Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    // Setup base map 
    final RelativeLayout rl = new RelativeLayout(this); 

    CloudmadeUtil.retrieveCloudmadeKey(getApplicationContext()); 

    final MapView osmv = new MapView(this, 256); 

    myMapController = osmv.getController(); 

    rl.addView(osmv, new RelativeLayout.LayoutParams(LayoutParams.FILL_PARENT, 
      LayoutParams.FILL_PARENT)); 
    osmv.setBuiltInZoomControls(true); 
    osmv.setMultiTouchControls(true); 

    myLocationoverlay = new MyLocationOverlay(this, osmv); 

//*snip* setup of map, mapcontrollers, tiles etc... 
    osmv.getOverlays().add(tilesOverlay); 
    osmv.getOverlays().add(myLocationoverlay); 

    this.setContentView(rl); 
} 

edit: Sto parlando di un pulsante mi piace

<ImageButton 
    android:id="@+id/map_goto_location" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:src="@drawable/goto_location" 
    android:layout_alignParentRight="true" 
    android:layout_alignParentTop="true" 
    android:id="@+id/goto_location" /> 
+2

Poiché si aggiunge 'MapView' a' RelativeLayout', è sufficiente aggiungere altri elementi dell'interfaccia utente a questo stesso contenitore. Assicurati di aggiungerli dopo aver aggiunto 'MapView' in modo che vengano disegnati sopra. Puoi impostare tutti gli elementi dell'interfaccia utente nel codice o dichiararli in xml e utilizzare un 'LayoutInflater' per gonfiarli. Inoltre, non dimenticare di aggiungerli dopo aver creato/gonfiato. –

risposta

4

Grazie al suggerimento di MH ho scoperto come aggiungere programatically un ImageButton al mio codice, come di seguito:

ImageButton goto_location = new ImageButton(this); 
    goto_location.setOnClickListener(new OnClickListener() 
    { 
     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      showMylocation(); 
     }   
    }); 

    RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(40, 40); 
    params.rightMargin = 10; 
    params.topMargin = 10; 
    rl.addView(goto_location, params); 

Se qualcuno mi può suggerire qualche buon tutorial/esempi sulla personalizzazione del pulsante e sull'aggiunta programmata di elementi dell'interfaccia utente, sarei molto felice.

+0

È anche possibile definire questo pulsante nel proprio XML di layout. Crea semplicemente un RelativeLayout e aggiungi osmdroid MapView e i tuoi pulsanti. – scai