首先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的使用方法及其在不同场景下的应用。 首先,PopupWindow的基本用法分为三个主要步骤: 1. 创建PopupWindow对象实例。这通常通过传入一个View对象来实现,这个View将作为...
在代码实现中,首先需要通过LayoutInflater将XML布局文件转换为View对象,然后使用`PopupWindow`的构造函数创建一个`PopupWindow`实例,传入View对象、宽度和高度。你可以选择是否使`PopupWindow`具有触摸外部区域...
在本文中,我们将深入探讨PopupWindow的使用方法,并通过实例代码来展示其核心功能。 1. **PopupWindow的基本概念** PopupWindow并非是一个真正的Activity或Dialog,而是基于View的一种弹出窗口。它可以悬浮于当前...
该项目演示了,PopupWindow的基本使用,相关PopupWindow代码有独立的Class文件,并且有大量的注释说明。实现的功能有弹出的PopupWindow上有EditText能与软键盘并存不冲突,弹出PopupWindow的时候背景自动改变灰度为...
下面将详细讲解PopupWindow的使用方法及其相关知识点。 首先,创建PopupWindow的基本步骤如下: 1. **初始化PopupWindow**: 首先需要创建一个PopupWindow实例,传入一个View作为内容视图,以及宽度和高度。例如...
通过阅读和理解这些代码,将有助于加深对PopupWindow用法的理解,并能灵活运用到自己的项目中。 总之,PopupWindow是Android开发中的一种强大工具,掌握其基本用法和各种定制技巧,能帮助我们创建出更美观、易用的...
本篇文章将详细介绍如何在Android应用中使用PopupWindow,并通过一个具体的案例来演示其基本用法。 首先,PopupWindow是Android SDK提供的一种轻量级的弹窗组件,相比Dialog,它的创建和显示更加灵活。PopupWindow...
下面将详细介绍`PopupWindow`的使用方法及其相关知识点。 首先,`PopupWindow`的创建需要三个基本元素:一个View(内容视图)、一个宽度和一个高度。通常,内容视图是自定义布局,包含了你想要在弹出窗口中展示的...
此外,PopupWindow还有其他高级用法,如调整其触摸事件的分发,使其与底层View交互,或者在PopupWindow中添加滚动视图等。这些内容可能会在博客的后续部分进行深入探讨。 通过阅读博客和研究源码,开发者可以更熟练...
本文实例为大家分享了android popupwindow的用法,供大家参考,具体内容如下 一、基本用法 一般做法,新建类继承popupwindow。例 /** * popupwindow基本用法 * Created by Administrator on 2015/11/25. */ ...
PopupWindow 使用方法详解 PopupWindow 是 Android 中一种常用的 UI 控件,用于显示浮动窗口,例如弹出菜单、提示框、选择框等。下面将详细介绍 PopupWindow 的使用方法。 一、PopupWindow 的布局 首先,需要...
在描述中提到的博客链接虽然无法直接访问,但根据常见的PopupWindow用法,我们可以讨论以下关键知识点: 1. **PopupWindow的基本使用**: - 创建PopupWindow实例时,需要传入一个View,这是PopupWindow的内容视图...
下面将详细介绍PopupWindow的使用方法、特性以及常见应用场景。 1. **PopupWindow的基本结构** PopupWindow主要由三部分组成:内容视图(ContentView)、背景(Background)和锚点(Anchor View)。内容视图是你想...
这只是一个基础的PopupWindow用法,实际开发中还可以根据需要添加动画效果、调整弹出位置、处理触摸事件等多种功能,以实现更加复杂的交互体验。 总之,PopupWindow是Android开发中非常实用的一个工具,通过自定义...
在 `onClick` 方法中,我们将 `PopupWindow` 显示在按钮上方: ```java public void showPopupWindow(View view) { // ... popupWindow.showAsDropDown(view, 0, -view.getHeight()); // 显示在按钮上方 } ``` 5...
本篇文章将深入探讨PopupWindow的基本概念、使用方法以及在实际开发中的应用。 首先,PopupWindow的核心在于它的三个基本属性:内容视图(content view)、宽度(width)和高度(height)。内容视图是你希望在...
当然,PopupWindow还有很多高级用法,比如自定义动画、调整显示位置、设置触摸边缘是否关闭等。在实际项目中,可以根据需求灵活应用。 总的来说,PopupWindow是Android开发中一个不可或缺的工具,它提供了丰富的...