Welcome 微信登录
编程资源 图片资源库 蚂蚁家优选 PDF转换器

首页 / 操作系统 / Linux / Android中PopupWindow自定义坐标实现

Android中PopupWindow位置的确定一般通过showAsDropDown函数来实现,该函数有两个重载函数,分别定义如下:
  1. public void showAsDropDown(View anchor) {  
  2.     showAsDropDown(anchor, 00);  
  3. }  
  4.   
  5. public void showAsDropDown(View anchor, int xoff, int yoff) {  
  6.     if (isShowing() || mContentView == null) {  
  7.         return;  
  8.     }  
  9.   
  10.     registerForScrollChanged(anchor, xoff, yoff);  
  11.   
  12.     mIsShowing = true;  
  13.     mIsDropdown = true;  
  14.   
  15.     WindowManager.LayoutParams p = createPopupLayout(anchor.getWindowToken());  
  16.     preparePopup(p);  
  17.   
  18.     updateAboveAnchor(findDropDownPosition(anchor, p, xoff, yoff));  
  19.   
  20.     if (mHeightMode < 0) p.height = mLastHeight = mHeightMode;  
  21.     if (mWidthMode < 0) p.width = mLastWidth = mWidthMode;  
  22.   
  23.     p.windowAnimations = computeAnimationResource();  
  24.   
  25.     invokePopup(p);  
  26. }  
也就是说,调用第一个函数时,x和y坐标偏移量默认是0,此时PopupWindow显示的结果如下中图所示。而要实现PopupWindow显示在wenwen的正下方时,就需要程序员自己进行坐标偏移量的计算,下右图所示,当点击wenwen时,PopupWindow显示在正下方,这正是我们所需要的,对称是一种美啊。