1. Android的對話框有兩種:PopupWindow和AlertDialog。web
它們的不一樣點在於:AlertDialog的位置固定,而PopupWindow的位置能夠隨意
AlertDialog是非阻塞線程的,AlertDialog彈出的時候,後臺但是還能夠作其餘事情的哦。 this
而PopupWindow是阻塞線程的, 這就意味着在咱們退出這個彈出框以前,程序會一直等待spa
PopupWindow的位置按照有無偏移分,能夠分爲偏移和無偏移兩種;按照參照物的不一樣,能夠分爲相對於某個控件(Anchor錨)和相對於父控件。具體以下
showAsDropDown(View anchor):相對某個控件的位置(正左下方),無偏移
showAsDropDown(View anchor, int xoff, int yoff):相對某個控件的位置,有偏移
showAtLocation(View parent, int gravity, int x, int y):相對於父控件的位置(例如正中央Gravity.CENTER,下方Gravity.BOTTOM等),能夠設置偏移或無偏移線程
LayoutInflater layoutInflater = LayoutInflater.from(this);ci
View popupWindow = layoutInflater.inflate(R.layout.popup, null);it