2012-11-11 13 views
5

Tworzę widok mapy OSMdroid w mojej MapActivity.java i chcę dodać przyciski pop-upy & - Wiem tylko, jak to się robi w .xml, ale ponieważ ten MapView nie używa żadnego .xml jestem zdziwiony, jak mogę umieścić przyciski (obraz) w moim kodzie java.Przyciski nad widokiem mapy

@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: Mówię o przycisku jak

<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

Od dodania 'MapView' do' RelativeLayout', po prostu dodaj wszystkie inne elementy interfejsu użytkownika do tego samego kontenera. Po prostu dodaj je po dodaniu 'MapView', aby były rysowane na górze. Możesz albo skonfigurować wszystkie elementy interfejsu użytkownika w kodzie, albo zadeklarować je w xml i użyć 'LayoutInflater', aby je nadmuchać. Nie zapomnij dodać ich po utworzeniu/nadmuchaniu. –

Odpowiedz

4

Dzięki wskazówce MH I okazało się, jak programowo dodać ImageButton do mojego kodu jak poniżej:

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

Jeśli ktokolwiek może mi wskazać kilka dobrych tutoriali/przykładów na temat dostosowywania przycisku i programowego dodawania elementów interfejsu użytkownika, byłbym bardzo szczęśliwy.

+0

Możliwe jest również zdefiniowanie tego przycisku w arkuszu XML. Po prostu utwórz RelativeLayout i dodaj osmdroid MapView i swój przycisk (i). – scai

Powiązane problemy