我正在使用此代碼添加一個佈局,該佈局在標記頂部顯示關於標記的信息。雖然我使用代碼在此代碼中將像素轉換爲dpi。但它不會以不同的dpis相同的觀點看待。在地圖頂部添加信息窗口查看標記在不同的dpis中不相同
protected override bool OnTap (int index)
{
if (!ShowPropertyFlag) {
if (mapview .ChildCount > 0) {
mapview .RemoveViewAt (0);
}
if (_items [index].Snippet == Boolean .FalseString) {
InformationLayout iWindow = new InformationLayout
(mapview .Context, _Properties [_items [index].Title], sayActivity);
GeoPoint p = _items [index].Point;
MapView.LayoutParams _params = new MapView.LayoutParams
(WindowManagerLayoutParams .WrapContent,
WindowManagerLayoutParams.WrapContent
, p,-(int) Common .convertPixelsToDp (13,sayActivity),-(int) Common .convertPixelsToDp (25,sayActivity),
MapView .LayoutParams .Bottom );
_params.Mode = MapView .LayoutParams .ModeMap;
iWindow .Visibility = ViewStates .Visible;
mapview .AddView (iWindow, _params);
mapview .HasIWindows =true ;
} else {
Property[] m = _SubProperties [_items [index].Title];
List <Property > templist= m.OfType <Property >() .ToList();
sayActivity .ListShow (templist ,m.Length);
}
}
return base.OnTap (index);
}
,這是我在Common .convertPixelsToDp
使用的像素轉換成壓差
public static float convertPixelsToDp (float px, Context context)
{
return px/((float)context.Resources.DisplayMetrics.DensityDpi/160f);
}
我的標記寬度×高度的代碼是:25×45
因爲我是新用戶我不能在不同的dpis上發佈我的信息窗口和標記的圖像,但我解釋它。在ldpi中它看起來不錯,並且處於良好的狀態(我通過嘗試不同的數字來修復它,最後通過13和25得到修復)但在hdpi中,信息窗口關於標記的中心而不是標記的頂部。我不明白爲什麼?雖然我用像素轉換器。
編輯:
也許鏈接幫忙看看在不同的充的DPI圖片:
華電國際:http://i.stack.imgur.com/K8vjO.png
LDPI:http://i.stack.imgur.com/sLH5o.png
。有任何身體的想法? –
你爲什麼不使用'OverlayItems'? – Cheesebaron
這是和overlayItem類 –