释放双眼,带上耳机,听听看~!

一、概述

1、PopupWindow与AlertDialog的区别

最关键的区别是AlertDialog不能指定显示位置,只能默认显示在屏幕最中间(当然也可以通过设置WindowManager参数来改变位置)。而PopupWindow是可以指定显示位置的,随便哪个位置都可以,更加灵活。

2、PopupWindow的相关函数

第一步:最基本构造PopupWindow

View contentView = LayoutInflater.from(MainActivity.this).inflate(R.layout.popuplayout, null);

PopupWindwo popWnd = PopupWindow (context);

popWnd.setContentView(contentView);

popWnd.setWidth(ViewGroup.LayoutParams.WRAP_CONTENT);

popWnd.setHeight(ViewGroup.LayoutParams.WRAP_CONTENT);

拓展:也可以缩写成为两句话

View contentView = LayoutInflater.from(MainActivity.this).inflate(R.layout.popuplayout, null);

PopupWindwo popWnd = new PopupWindow (contextView,ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT, true);

第二步:上面的代码基本就生成了一个简单的PopUpWindow,但是想要显示出来还需要以下方法

显示函数主要使用下面三个:

//相对某个控件的位置(正左下方),无偏移

showAsDropDown(View anchor):

//相对某个控件的位置,有偏移;xoff表示x轴的偏移,正值表示向左,负值表示向右;yoff表示相对y轴的偏移,正值是向下,负值是向上;

showAsDropDown(View anchor, int xoff, int yoff):

//相对于父控件的位置(例如正中央Gravity.CENTER,下方Gravity.BOTTOM等),可以设置偏移或无偏移

showAtLocation(View parent, int gravity, int x, int y):

这里有两种显示方式:

1、显示在某个指定控件的下方

showAsDropDown(View anchor):

showAsDropDown(View anchor, int xoff, int yoff);

2、指定父视图,显示在父控件的某个位置(Gravity.TOP,Gravity.RIGHT等)

showAtLocation(View parent, int gravity, int x, int y);

第三步显示窗体

通过showAsDropDown显示出来,但是从哪里显示出来还没有定义,

有同学就会问难道不是在第一步布局文件显示的吗?

那只是显示的布局,并没有说在哪里显示,所以我们还是要加载主窗口,在主窗口显示

View rootview = LayoutInflater.from(MainActivity.this).inflate(R.layout.main, null);

mPopWindow.showAtLocation(rootview, Gravity.BOTTOM, 0, 0);

完整代码

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

View contentView = LayoutInflater.from(MainActivity.this).inflate(R.layout.pewm, null);

mPopWindow = new PopupWindow(contentView,

ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT, true);

//显示PopupWindow

View rootview = LayoutInflater.from(MainActivity.this).inflate(R.layout.activity_main, null);

mPopWindow.showAtLocation(rootview, Gravity.BOTTOM, 0, 0);

}

android popupwindow 调用方法,Android PopUpWindow使用详解相关推荐

  1. Android JNI使用方法,JNI机制详解

    Android JNI使用方法,JNI机制详解 JNI的出现使得开发者既可以利用Java语言跨平台.类库丰 富.开发便捷等特点,又可以利用Native语言的高效. JNI是JVM实现中的一部分,因此N ...

  2. Android进阶笔记:Messenger源码详解

    Messenger可以理解为一个是用于发送消息的一个类用法也很多,这里主要分析一下再跨进程的情况下Messenger的实现流程与源码分析.相信结合前面两篇关于aidl解析文章能够更好的对aidl有一个 ...

  3. android中怎么网络判断,Android中判断网络是否连接实例详解

    Android中判断网络是否连接实例详解 在android中,如何监测网络的状态呢,这个有的时候也是十分重要的,方法如下: public class ConnectionDetector { priv ...

  4. Android消息传递之EventBus 3.0使用详解

    前言: 前面两篇不仅学习了子线程与UI主线程之间的通信方式,也学习了如何实现组件之间通信,基于前面的知识我们今天来分析一下EventBus是如何管理事件总线的,EventBus到底是不是最佳方案?学习 ...

  5. Android低功耗蓝牙(BLE)使用详解

    代码地址如下: http://www.demodashi.com/demo/13390.html 与普通蓝牙相比,低功耗蓝牙显著降低了能量消耗,允许Android应用程序与具有更严格电源要求的BLE设 ...

  6. Android系统(96)---Android 数据交换解析框架Gson使用详解

    Android 数据交换解析框架Gson使用详解 Json 是一种文本形式的数据交换格式,比 xml 更为轻量.Json 的解析和生成的方式很多,在 Android 平台上最常用的类库有 Gson 和 ...

  7. Android 8.0学习(32)---Android 8.0源码目录结构详解

    Android 8.0源码目录结构详解 android的移植按如下流程:     (1)android linux 内核的普通驱动移植,让内核可以在目标平台上运行起来.     (2)正确挂载文件系统 ...

  8. Android 7.0 Audio的Resample过程详解

    Android 7.0 Audio的Resample过程详解 Qidi 2017.02.23 (Markdown & Haroopad) [前言] 处理过音频文件的工程师都知道音频数据存在采样 ...

  9. Android 各大厂面试题汇总与详解(持续更新)

    介绍 目前网络中出现了好多各种面试题的汇总,有真实的也有虚假的,所以今年我将会汇总各大公司面试比较常见的问题,逐一进行解答.会一直集成,也会收集大家提供的面试题,如有错误,请大家指出,经过排查存在,会 ...

最新文章

  1. 构建第三代人工智能核心能力,清华、阿里、RealAI等联合发布最新AI安全评估平台
  2. 红警1开源放出源码,4K高清重制版登顶Steam畅销榜!网友:青春回来了
  3. Linux 多线程同步机制:互斥量、信号量、条件变量
  4. Rust crates.io换国内镜像源
  5. VS 2012 如何发布 ASP.NET 网站到本地IIS
  6. coreldraw的线条怎么变成圆头_别再穿到处撞的小白鞋了,这五款春夏小皮鞋,不管怎么搭配都好看...
  7. 选择安防交换机时需要避免哪些误区呢?
  8. (转)Arcgis for Js之鼠标经过显示对象名的实现
  9. vue下载导出Excel案例
  10. 软件开发系统分析规格说明
  11. 严选chat_拔草 | 网易严选的零食,真的“严选”了吗?
  12. 自动控制原理7.1---离散系统的基本概念
  13. miracl实现sm2
  14. View和ViewGroup中的mParent
  15. ZOJ 3755 Mines
  16. python 成语接龙
  17. Visual Studio 2013如何显示代码行数
  18. AWS - Redshift - Unload 数据到S3产生的文件名
  19. 练习作业5: 韩信点兵 , 统计方案 , 出现最频的数
  20. linux进程间通讯的几种方式的特点和优缺点,和适用场合。

热门文章

  1. JUnit 5符合AssertJ
  2. junit 循环测试_重复运行JUnit测试而没有循环
  3. 在Cloudfoundry上部署RESTful服务
  4. Java用Java编译
  5. 设计模式的Java 8 Lambda表达式–命令设计模式
  6. Java无处不在:使用DukeScript在任何地方运行一次编写
  7. xuggler实现视频压缩_Xuggler视频处理简介
  8. 从Gradle自动将工件提升到Maven Central
  9. Byteman –用于字节码操纵的瑞士军刀
  10. Java中的线程本地存储