我使用Android.Support.V7.Widget.ListPopupWindow作为布局中按钮的下拉菜单。这是我正在使用的代码片段
void MenuIcon_Click (object sender, EventArgs e)
{
popupWindow = new Android.Support.V7.Widget.ListPopupWindow (this);
popupAdapter = new MenuPopUpAdapter (this,selectedIndex,menuList);
popupAdapter.ItemClick+= PopupAdapter_ItemClick;
popupWindow.SetAdapter (popupAdapter);
popupWindow.AnchorView = menuButton;
Display display = WindowManager.DefaultDisplay;
Point size = new Point();
display.GetSize (size);
int width = size.X;
popupWindow.Width =160;
popupWindow.Show ();
}
但是在调试时我注意到,即使我给它一个静态宽度,它在不同设备中的呈现方式也不同。是什么导致了这个问题?
答案 0 :(得分:2)
这是因为Android设备的屏幕密度不同。您需要在DP(密度无关像素)中提及尺寸以克服此问题。 This documentation from Google will be a nice read
您可以通过此方法以编程方式设置尺寸时获取相应的像素值。
public int dpToPx(int dp) {
DisplayMetrics displayMetrics = Resources.DisplayMetrics;
int px = (int)Math.Round(dp * (displayMetrics.Density));
return px;
}
您可以修改上述代码以解决问题
popupWindow.Width =dpToPx(160);