Android的对话框有两种:PopupWindow和AlertDialog。它们的不同点在于:

  • AlertDialog的位置固定,而PopupWindow的位置可以随意
  • AlertDialog是非阻塞线程的,而PopupWindow是阻塞线程的

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等),可以设置偏移或无偏移

/** * 初始化popWindow* */private void initPopWindow() {View popView = inflater.inflate(R.layout.listview_pop, null);popupWindow = new PopupWindow(popView, LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);popupWindow.setBackgroundDrawable(new ColorDrawable(0));//设置popwindow出现和消失动画
        popupWindow.setAnimationStyle(R.style.PopMenuAnimation);btn_pop_close = (ImageView) popView.findViewById(R.id.btn_pop_close);ll_pop_speech=(LinearLayout) popView.findViewById(R.id.ll_pop_speech);ll_pop_favor=(LinearLayout) popView.findViewById(R.id.ll_pop_favor);ll_pop_dislike=(LinearLayout) popView.findViewById(R.id.ll_pop_dislike);btn_pop_close.setOnClickListener(new popItemOnClickListener());ll_pop_speech.setOnClickListener(new popItemOnClickListener());ll_pop_favor.setOnClickListener(new popItemOnClickListener());ll_pop_dislike.setOnClickListener(new popItemOnClickListener());}
/** * 显示popWindow* */public void showPop(View parent, int x, int y,int postion) {//设置popwindow显示位置popupWindow.showAtLocation(parent, 0, x, y);//获取popwindow焦点popupWindow.setFocusable(true);//设置popwindow如果点击外面区域,便关闭。popupWindow.setOutsideTouchable(true);popupWindow.update();if (popupWindow.isShowing()) {}}
/** * 每个ITEM中more按钮对应的点击动作***/public class popAction implements OnClickListener{int position;public popAction(int position){this.position = position;}@Overridepublic void onClick(View v) {int[] arrayOfInt = new int[2];//获取点击按钮的坐标
            v.getLocationOnScreen(arrayOfInt);int x = arrayOfInt[0];int y = arrayOfInt[1];showPop(v, x , y, position);}}

源码下载 地址 http://pan.baidu.com/s/1ntJTvol

Android中的PopupWindow详解相关推荐

  1. android调webview的方法,Android中的WebView详解

    Android中的WebView详解 WebView详解 基本用法 布局文件配置WebView android:id="@+id/wv_news_detail" android:l ...

  2. Android 中malloc_debug 原理详解

    版本基于:Android R 关联博文: Android 中malloc_debug 使用详解 0. 前言 最近上项目中遇到一个native 可能内存泄漏的问题,曾考虑使用HWASAN,但这个工具是针 ...

  3. Android中mesure过程详解 (结合Android 4.0.4 最新源码)

    如何遍历并绘制View树?之前的文章Android中invalidate() 函数详解(结合Android 4.0.4 最新源码)中提到invalidate()最后会发起一个View树遍历的请求,并通 ...

  4. Android中layout过程详解 (结合Android 4.0.4 最新源码)

    上一篇文章Android中mesure过程详解 (结合Android 4.0.4 最新源码)介绍了View树的measure过程,相对与measure过程,本文介绍的layout过程要简单多了,正如l ...

  5. Android中shape属性详解

    一.简单使用 刚开始,就先不讲一堆标签的意义及用法,先简单看看shape标签怎么用. 1.新建shape文件 首先在res/drawable文件夹下,新建一个文件,命名为:shape_radius.x ...

  6. 【Android】 Android中Log调试详解

    LOG类: public final class Log extends Object java.lang.Object   android.util.Log Constants int ASSERT ...

  7. android context继承关系,android中Context深入详解

    以下分别通过Context认知角度,继承关系,对象创建等方面android中Context做了深入的解释,一起学习下. 1.Context认知. Context译为场景,一个应用程序可以认为是一个工作 ...

  8. Android中的长度单位详解

    http://blog.csdn.net/zuolongsnail/article/details/6397768 in(英寸)长度单位(基本用不到) mm(毫米)长度单位(基本用不到) pt(poi ...

  9. 【Android】Android中ContentProvider组件详解

    原文来自:http://blog.csdn.net/zuolongsnail/article/details/6566317 ContentProvider(内容提供者)是Android中的四大组件之 ...

最新文章

  1. L1-044 稳赢 (暴力法)
  2. 阿里云蒋江伟:我们致力于为世界提供70%的算力 | 凌云时刻
  3. java 风袖,仓库 - 高谷深陵 (gaogushenling) - Gitee.com
  4. 天合公司 TRW Inc.
  5. ajax配置要求,AJAX浅谈
  6. Maven(二):常用命令、依赖管理
  7. 十天学会ASP.Net——(2)
  8. 存储世界瞬息万变 SSD掀行业浪潮
  9. [archlinux][hardware] 查看SSD的使用寿命
  10. python新手如何编写一个猜数字小游戏
  11. 操作系统抖动现象、网络抖动与延迟、函数抖动之防抖与节流
  12. js中的四种常用数组排序方法(冒泡、选择、插入、快排)及sort排序
  13. ERP软件高效排产计划:如何解决企业排产难题
  14. 安装httprunner
  15. dimm和udimm_Adata推出32GB DDR4-2666 UDIMM和SO-DIMM
  16. 15 条实用 Linux/Unix 磁带管理命令
  17. 阿蒙森 斯科特_斯科特的电影版本:3下! 1去。
  18. Grub for DOS/NTLDR中文版Climbing定制版第四版(完全淘汰VFloppy)
  19. 开源ERP| Odoo系统如何实现企微扫码登录
  20. 禁止静态文件缓存的方法,可用于JS与CSS文件上

热门文章

  1. C++知识点38——拷贝赋值运算符、析构函数、=default、阻止拷贝和赋值
  2. 15.QT布局管理及示例
  3. 学生卡变成普通卡_刚接触流量卡的小白看这一篇就够了!!!
  4. 在Heroku上扩展ipify服务
  5. Android镜像文件的拆解
  6. cocos2dx spine之一 :spine缓存 (c++ lua)
  7. JavaScript引擎研究与C、C++与互调用(转)
  8. Android开发实战三之导入现有Android工程项目
  9. 一个恶心的无法同步服务器与pda时间的龌龊问题
  10. [译]Vulkan教程(05)Instance