Xamarin 以不同宽度渲染的自定义ListPopupWindow
我正在使用Android.Support.V7.Widget.ListPopupWindow作为布局中按钮的下拉菜单。下面是我正在使用的代码片段Xamarin 以不同宽度渲染的自定义ListPopupWindow,xamarin,xamarin.android,Xamarin,Xamarin.android,我正在使用Android.Support.V7.Widget.ListPopupWindow作为布局中按钮的下拉菜单。下面是我正在使用的代码片段 void MenuIcon_Click (object sender, EventArgs e) { popupWindow = new Android.Support.V7.Widget.ListPopupWindow (this); popupAdapter = new MenuPopUpAdapter (this,selected
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 ();
}
但在调试过程中,我注意到,尽管我给了它一个静态宽度,但它在不同的设备中呈现的方式不同。是什么导致了这个问题?这是因为Android设备的屏幕密度不同。为了解决这个问题,您需要使用DPs(与密度无关的像素)来表示尺寸 通过此方法编程设置尺寸时,可以获得要提及的相应像素值
public int dpToPx(int dp) {
DisplayMetrics displayMetrics = Resources.DisplayMetrics;
int px = (int)Math.Round(dp * (displayMetrics.Density));
return px;
}
您可以如上所述修改代码以解决此问题
popupWindow.Width =dpToPx(160);