首先show一下執行結果給大家看,
這一張圖是按下Press to Popup
接著我按下 Press to Popup 之後,彈出了PopupWindow,在PopupWindow中的元件都是View 的元件,並且都可操作
PopupWindow中的元件皆是可操作的,並且當我在 Popup Window 以外的地方作GUI操作時,也都是可以操作的,
如下所示,命名為 Outside 的 Button 是 PopupWindow之外的元件,然而當視窗彈出後,
我們仍然可觸碰到這個元件。
(當然我們也可以透過PopupWindow的函數作設定,讓PopupWindow起來時,使用者無法觸碰到 Outside Button)
因為我想要作是是一個真實感的 PopupWinodw,所以當觸碰範圍操出PopupWindow之外,
便呼叫dismiss() 關掉此PopupWindow,所以會出現如下畫面。
由上圖畫面可看出來,PopupWindow 已經被關掉了。
接下來,本文篇文章解釋一下 PopupWindow class 的用法
「如何在 Android 上運用 PopupWindow class」
本文章是分享給一些有 Android App 初階開發者功力的朋友們。
PopupWindow 這個 class, 從 Eclair 上,目前只發現有 Calendar 的 Application 跟 AutoCompleteTextView 有使用到。
目前發現到 Android 其它彈出視窗的實作,除了用Activity的實作偽裝成 假性Dialog 的方法之外,就是這個 PopupWindow。
所謂的 假性 Dialog 方法,可以參閱 像是 QuickContactActivity.java 的實作,
或者像是 SearchDialog.java 的實作。
(SearchDilaog 的實作可參考 http://wp.me/pMRh0-R )
不過想想 AutoCompleteTextView 的 DropDown Menu 的話,其實還是 PopupWindow
的使用比較 make sense。至少它的特性看起來還不賴。
因此就花了一點時間把 這兩邊的 code 靜態trace一下,
把一些有用的元素抽離出來,所以就形成了這篇文章。
建議有空的話,還是要 trace 一下 PopupWindow 的 source code
如同一般的假性Dialog 的作法,運用dismiss().
透過 Calendar 程式中的 CalendarView.java 的程式
我們發現,只要作如下這件事
mPopup.getContentView().setOnClickListener(new OnClickListener(){
public void onClick(View v) {
mPopup.dismiss();
}
} );
那麼當你的滑鼠觸及其它地方的時候,就可以呼叫 dimiss(),把mPopup關掉了。
因為假設讀者有自己的方法,可以動一下手腳把 dismiss 作的好。
然後比較值得一提的在這邊
要如何作,才能當使用按超出 PopupWindow 的範圍時,
事件能夠放PopupWindow外的 View 所接收,並且PopupWindow會被關上
(就如同 AutoCompleteTextView 的效果一樣)
主要是設 setFocusable為 false
也設 setOutsideTouchable 為 true
LayoutInflater inflater = (LayoutInflater)this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
mPopup = new PopupWindow(inflater.inflate(R.layout.popup_window_layout, null, false), 300, 300, false);
mPopup.setOutsideTouchable(true);
然後PopupWindow 外的元件如果接到 Event的話,
就設 mPopup.dismiss()把PopupWindow關掉
另外 PopupWindow 的 showAsDropDown() 用起來,
似乎是比 showAtLocation 好用多了。
所以如果你是想要作一個可彈出的 ContextMenu,特別建議可以用showAsDropDown()
转载:http://milochen.wordpress.com/2010/06/16/android_popupwindow_class/
分享到:
相关推荐
主要介绍了Android入门之PopupWindow用法,对于Android初学者来说有一定的学习借鉴价值,需要的朋友可以参考下
主要为大家详细介绍了Android中PopupWindow使用方法,感兴趣的小伙伴们可以参考一下
PopupWindow详细用法实例源代码
该项目演示了,PopupWindow的基本使用,相关PopupWindow代码有独立的Class文件,并且有大量的注释说明。实现的功能有弹出的PopupWindow上有EditText能与软键盘并存不冲突,弹出PopupWindow的时候背景自动改变灰度为...
主要为大家详细解析了Android PopupWindow用法,对PopupWindow源码进行分析,感兴趣的小伙伴们可以参考一下
前几天要用到PopupWindow,一时竟想不起来怎么用,赶紧上网查了查,自己写了个demo,并在此记录一下PopupWindow的用法。 使用场景 PopupWindow,顾名思义,就是弹窗,在很多场景下都可以见到它。例如ActionBar/...
本文实例为大家分享了android popupwindow的用法,供大家参考,具体内容如下 一、基本用法 一般做法,新建类继承popupwindow。例 /** * popupwindow基本用法 * Created by Administrator on 2015/11/25. */ ...
主要为大家详细介绍了Android组件popupwindow使用方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
主要介绍了Android开发中PopupWindow用法,结合实例形式分析了PopupWindow弹出窗口效果的使用技巧,需要的朋友可以参考下
popupWindow使用的方法,以及PopupWindow样式的使用
PopupWindow的使用,在一个Activity中显示PopupWindow,并使用一个Button来隐藏PopupWindow
主要为大家详细介绍了PopupWindow的使用方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
popupwindow的基本用法