如圖所示,要實現,PopupWindow彈出的菜單隨內容的寬度決定,目前找到自認爲比較好的辦法是,重寫ListView的onMeasure()方法。而後就能夠實現了,在此mark一下。代碼以下: java
@Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { int maxWidth = meathureWidthByChilds() + getPaddingLeft() + getPaddingRight(); super.onMeasure(MeasureSpec.makeMeasureSpec(maxWidth, MeasureSpec.EXACTLY), heightMeasureSpec); } public int meathureWidthByChilds() { int maxWidth = 0; View view = null; for (int i = 0; i < getAdapter().getCount(); i++) { view = getAdapter().getView(i, view, this); view.measure(MeasureSpec.UNSPECIFIED, MeasureSpec.UNSPECIFIED); if (view.getMeasuredWidth() > maxWidth){ maxWidth = view.getMeasuredWidth(); } } return maxWidth; }