popupwindow 彈出窗體

popupwindow 彈出窗體,和對話框類似是輕量級的窗體,可以在窗體中顯示各種效果

1.創建popupwindow 彈出窗體,PopupWindow popupWindow = new PopupWindow(contentView,width,height);

contentView:是要顯示的view對象,後面兩個是高度跟寬度

2.定義一個view對象傳入到contentView中

3.顯示出來popupWindow.showAtLocation(parent,gravity,x,y);

parent:掛載在那個父控件

gravity:指定他的對齊方式,Gravity.LEFT|Gravity.TOP

後面的x和y分別指定與左邊跟上邊的偏移量

//popupwindow的窗體默認是透明的顏色,要指定popuwindow的窗體的背景顏色

popupWindow.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));這裏面的參數是drawable對象,上面的參數指定背景是透明的

上面的程序會有一個問題,就是如果彈出來的窗體後,點擊其他地方窗體是不會消失,相當於對話框一樣了,我們還可以創建另一個構造方法指定這個可以有焦點,那麼如果另的組件搶走這個焦點,這個彈出窗體也會消失了.PopupWindow(contentView,width,height,onFource);後面那個指定是否可以獲取焦點

注意在使用popupWindow的時候一定要給他設置窗體的背景顏色,如果不設置會出現問題,popupWindow不會自動關閉,在popupWindow裏面的動畫效果也不會顯示了

 

在setOnItemClickListener()事件中的onItemClick()方法,第二個參數view 代表的是listView裏面的每一個顯示的條目

我們可以得到這個條目的位置

int[] location = new int[2];

view.getLocationInWindow(location);//把位置位置存在location數組中

 

停止popupwindow

if(popupwindow != null && popupwindow.isShowing()){popupwindow.dismiss(); }

有以下幾種情況要取消popupwindow

1.點擊另一條目時

2.屏幕發生滾動時

3.直接點後退會出錯,窗體發生泄漏,因爲popupwindow掛載的窗體被回收了,不會影響程序但是會在log中打印出錯誤日誌,重寫onDestory()方法中去關閉popupwindow 

 

popupwindow可以用xml佈局,用View,inflate()方法創建一個view,然後把這個view做爲popupwindow的view參數傳入,也可以設置動畫,這個佈局設置一個動畫

 

當popupwindow顯示的時候,如果按了返回按鈕就會報錯,但是不會影響程序運行,因爲popupwindow是掛在一個activity上的,如果activity消失了,但是popupwindow還沒有取消,就會報錯,應該在onDestory()的時候手動停止popupwindow.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章