首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Android PopupWindow 與錨點左側出現間隙的原因與修復

     編輯:程式設計綜合問答

常見原因

  1. 背景未設置:PopupWindow 默認背景透明,若未 setBackgroundDrawable,某些系統版本會保留默認邊距。
  2. 寬高模式:setWidth/Height(WRAP_CONTENT) 配合某些佈局會導致測量偏差。
  3. 錨點位置計算:showAsDropDown(anchor) 在 API 24+ 行為變更,若 anchor 寬度不足會偏移。

標準修復代碼

PopupWindow popup = new PopupWindow(contentView, 
    ViewGroup.LayoutParams.WRAP_CONTENT, 
    ViewGroup.LayoutParams.WRAP_CONTENT, true);

// 關鍵:設置背景(哪怕透明也要設置)
popup.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));

// 可選:精確控制偏移
popup.showAsDropDown(anchor, xOffset, yOffset, Gravity.START | Gravity.TOP);

進階:自定義 PopupWindow 重寫寬高測量

若上述無效,可繼承 PopupWindow 重寫 getMaxAvailableHeight / onMeasure,強制去除系統預留邊距。但 90% 情況設置透明背景即可解決。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved