2012-11-19 127 views
0

出于某种原因,我未创建布局的位置(边距)。布局显示在x = 0和y = 0。我究竟做错了什么?设置相对布局的位置

smallPopup = new LinearLayout(this); 

LinearLayout.LayoutParams p = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT); 
p.setMargins(100, 100, 10, 10); 

smallPopup.setLayoutParams(p); 
smallPopup.setGravity(Gravity.CENTER_VERTICAL); 
smallPopup.setHorizontalGravity(Gravity.CENTER_HORIZONTAL); 
smallPopup.setBackgroundResource(R.drawable.map_small_popup_overlay); 
smallPopup.setPadding(20, 10, 20, 10); 

map.addView(smallPopup, p); 
+0

你能告诉的“地图”的创建? – fiddler

+0

好,地图就是我的MapView(com.google.android.maps.MapView)。如果我将视图添加到android.R.id.content或其他带有ID的布局,则新布局仍位于左侧角落。 – Melvin

+0

谢谢,我在mapview周围制作了一个relativelayout容器,并将代码从linearlayout更改为relativelayout。它现在有效。 – Melvin

回答

2

根据视图的容器,有几种类型的LayoutParams。

如果你想在一个MapView中定位一个元素,你需要使用MapView.LayoutParams,它不支持margin(因为它没有扩展MargingLayoutParams)。

MapView.LayoutParams延伸AbsoluteLayout.LayoutParams,这意味着你可以直接设置x和y的值:

WebView.LayoutParams p = new WebView.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT, 100, 100);