地图视图上的按钮

5

我正在MapActivity.java中创建一个OSMdroid地图视图,我想添加按钮和弹出窗口 - 我只知道如何在.xml文件中完成这个操作,但由于这个MapView没有使用任何.xml文件,我不知道如何在我的java代码中放置(图片)按钮。

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

编辑: 我在谈论像这样的按钮
<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
由于您将MapView添加到RelativeLayout中,因此只需将任何其他UI元素添加到此相同的容器中即可。只需确保在添加MapView之后添加它们,以便它们位于顶部。您可以在代码中设置所有UI元素,也可以在xml中声明它们并使用LayoutInflater进行填充。另外,在创建/填充后不要忘记添加它们。 - MH.
1个回答

4

感谢MH提供的提示,我发现如何通过编程方式将ImageButton添加到我的代码中,代码如下:

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

如果有人能给我一些关于自定义按钮和程序化添加UI元素的好教程/示例,我会非常高兴。

还可以在您的布局XML中定义此按钮。只需创建一个RelativeLayout并添加osmdroid MapView和您的按钮即可。 - scai

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接