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开发 一个对话框就不是难事了;