2012-11-11 39 views
5

Tôi đang tạo chế độ xem bản đồ OSMdroid trong MapActivity.java và tôi muốn thêm các nút & cửa sổ bật lên - Tôi chỉ biết cách này được thực hiện bằng .xml nhưng vì MapView này không sử dụng bất kỳ tệp .xml nào bối rối làm thế nào tôi có thể đặt (hình ảnh) nút trong mã java của tôi.Các nút trên 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); 
} 

chỉnh sửa: Tôi đang nói về một nút như

<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

Vì bạn đang thêm 'MapView' vào' RelativeLayout', chỉ cần thêm bất kỳ phần tử giao diện người dùng nào khác vào cùng một vùng chứa này. Chỉ cần chắc chắn để thêm những người sau khi thêm 'MapView' để họ có được rút ra trên đầu trang. Bạn có thể thiết lập tất cả các phần tử giao diện người dùng trong mã, hoặc khai báo chúng trong xml và sử dụng một 'LayoutInflater' để thổi phồng chúng. Ngoài ra, đừng quên thêm chúng sau khi tạo/tăng tốc. –

Trả lời

4

Nhờ gợi ý của MH tôi phát hiện ra làm thế nào để programatically thêm một ImageButton để mã của tôi như sau:

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

Nếu bất cứ ai có thể gợi ý cho tôi về một số hướng dẫn/ví dụ tốt về tùy chỉnh nút và trên các phần tử giao diện người dùng thêm lập trình, tôi sẽ rất hạnh phúc.

+0

Cũng có thể xác định nút này trong XML bố cục của bạn. Đơn giản chỉ cần tạo RelativeLayout và thêm Mapmap osmdroid và (các) nút của bạn. – scai

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