2012-11-19 124 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);