PopupWindow通常用於對話框的實現,能夠懸浮在Activity之上。
PopupWindow的位置按照有無偏移分,可以分爲偏移和無偏移兩種;按照參照物的不同,可以分爲相對於某個控件(Anchor錨)和相對於父控件。具體如下
PopupWindow顯示的重要方法
showAsDropDown(View anchor):相對某個控件的位置(正左下方),無偏移
showAsDropDown(View anchor, int xoff, int yoff):相對某個控件的位置,有偏移
showAtLocation(View parent, int gravity, int x, int y):相對於父控件的位置(例如正中央Gravity.CENTER,下方Gravity.BOTTOM等),可以設置偏移或無偏移
PopupWindow注意要點
1/需要設置PopupWindow的焦點,否則自定義佈局的控件將無法響應事件
this.setFocusable(true);
this.setOutsideTouchable(true);
2/創建PopupWindow時需要爲其設置一個背景,不然,點擊PopupWindow外部,不會讓PopupWindow消失
// 實例化一個ColorDrawable顏色爲半透明
ColorDrawable dw = new ColorDrawable(0000000000);
//點back鍵和其他地方使其消失,設置了這個才能觸發OnDismisslistener ,設 置其他控件變化等操作
this.setBackgroundDrawable(dw);
//設置樣式 mPopupWindow.setAnimationStyle(android.R.style.Animation_Dialog);
// 設置SelectPicPopupWindow彈出窗體動畫效果
this.setAnimationStyle(R.style.AnimationPreview);
上面用到的一個動畫:
<style name="AnimationPreview">
<item name="android:windowEnterAnimation">@anim/fade_in</item>
<item name="android:windowExitAnimation">@anim/fade_out</item>
</style>
瞭解了這些,基於PopupWindow開發 一個對話框就不是難事了;