创建一个类继承自PopupWindow,编写自定义的PopupWindow类。示例代码如下:

import android.app.Activity;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.PopupWindow; /**
* 自定义的PopupWindow
*/
public class MyPopWindow extends PopupWindow { public MyPopWindow(Activity context) {
// 通过layout的id找到布局View
View contentView = LayoutInflater.from(context).inflate(R.layout.pop_custom, null);
// 获取PopupWindow的宽高
int h = context.getWindowManager().getDefaultDisplay().getHeight();
int w = context.getWindowManager().getDefaultDisplay().getWidth();
// 设置PopupWindow的View
this.setContentView(contentView);
// 设置PopupWindow弹出窗体的宽高
this.setWidth(ViewGroup.LayoutParams.WRAP_CONTENT);
this.setHeight(ViewGroup.LayoutParams.WRAP_CONTENT);
// 设置PopupWindow弹出窗体可点击(下面两行代码必须同时出现)
this.setFocusable(true);
this.setOutsideTouchable(true); // 当点击外围的时候隐藏PopupWindow
// 刷新状态
this.update();
// 设置PopupWindow的背景颜色为半透明的黑色
ColorDrawable dw = new ColorDrawable(Color.parseColor("#66000000"));
this.setBackgroundDrawable(dw);
// 设置PopupWindow弹出窗体动画效果
this.setAnimationStyle(R.style.PopWindowAnimStyle); // 这里也可以从contentView中获取到控件,并为它们绑定控件
} // 显示PopupWindow,有两种方法:showAsDropDown、showAtLocation
public void showPopupWindow(View parent) {
if (!this.isShowing()) {
// showAsDropDown方法,在parent下方的(x,y)位置显示,x、y是第二和第三个参数
// this.showAsDropDown(parent, parent.getWidth() / 2 - 400, 18); // showAtLocation方法,在parent的某个位置参数,具体哪个位置由后三个参数决定
this.showAtLocation(parent, Gravity.CENTER, 0, 0);
} else {
this.dismiss();
}
}
}

  调用代码:

MyPopWindow popWindow = new MyPopWindow(MainActivity.this);
popWindow.showPopupWindow(new View(MainActivity.this));

【Android - 基础】之PopupWindow的使用的更多相关文章

  1. Android基础测试题(四)

    看了前两道题大家有没有发现,测试题少了(一),大家猜猜测试题(一)是什么? Android基础测试题(四): 需求: 建一个方法,格式化输出2016-11-14 10:15:26格式的当前时间,然后截 ...

  2. Android基础测试题(二)

    今天给大家带来的是Android基础测试题(二) 题目要求: 定义一个5位长度的整型数组并初始化,然后构建方法根据用户传入的数字判断是否存在数组中,如果存在,返回所在位置,如果不存在,返回-1 首先第 ...

  3. Mono.Android 基础

    Mono.Android 基础 (地址) Mono.Android项目结构是 — Project + Assets + Resources + drawable + layout + values R ...

  4. 深入理解gradle编译-Android基础篇

    深入理解gradle编译-Android基础篇 导读 Gradle基于Groovy的特定领域语言(DSL)编写的一种自动化建构工具,Groovy作为一种高级语言由Java代码实现,本文将对Gradle ...

  5. android基础---->JSON数据的解析

    上篇博客,我们谈到了XML两种常用的解析技术,详细可以参见我的博客(android基础---->XMl数据的解析).网络传输另外一种数据格式JSON就是我们今天要讲的,它是比XML体积更小的数据 ...

  6. 基础4 Android基础

    基础4 Android基础 1. Activity与Fragment的生命周期. Activity生命周期 打开应用 onCreate()->onStart()->onResume 按BA ...

  7. Android基础总结(8)——服务

    服务(Service)是Android中实现程序后台运行的解决方案,它非常适合用于去执行哪些不需要和用户交互而且还要长期运行的任务.服务的运行不依赖任何用户界面,即使当程序被切换到后台,或者用户打开了 ...

  8. Android开发之PopupWindow

      /* *  Android开发之PopupWindow * *  Created on: 2011-8-8 *  Author: blueeagle *  Email: liujiaxiang@g ...

  9. 【Xamarin开发 Android 系列 4】 Android 基础知识

    原文:[Xamarin开发 Android 系列 4] Android 基础知识 什么是Android? Android一词的本义指“机器人”,同时也是Google于2007年11月5日宣布的基于Li ...

  10. Android 7.0 PopupWindow 的兼容问题

    Android7.0 PopupWindow的兼容问题    Android7.0 中对 PopupWindow 这个常用的控件又做了一些改动,修复了以前遗留的一些问题的同时貌似又引入了一些问题,本文 ...

随机推荐

  1. Yii 跨域设置

    控制器设置: abstract class ControllerBase extends Controller { public function __construct($id, $module, ...

  2. composer的create-project安装php框架laravel for mac教程

    通过 Composer 的 create-project 命令安装 Laravel 通过在命令行执行 Composer 的 create-project 命令来安装Laravel: composer ...

  3. win8 开启wifi

    1,以管理员身份运行命令提示符,输入命令 netsh wlan set hostednetwork mode=allow ssid=networkname key=password后回车 其中ssid ...

  4. 向OC类中添加默认的协议实现(ProtocolKit)

    以forkingdog的PorotocolKit举例 举例 ProtocolKit Protocol extension for Objective-C Usage Your protocol: @p ...

  5. hibernate配置文件详细解释

    <!--标准的XML文件的起始行,version='1.0'表明XML的版本,encoding='gb2312'表明XML文件的编码方式--> <?xml version='1.0' ...

  6. SQL(笔试题)网站上的广告位是轮播的,每天某一广告位最多可轮播的广告数量是有限制的,比如A广告位,每天只能轮播三个广告,但销售人员在销售广告位时并不考虑此限制,要求查询出合同表中,超过广告位轮播数量的合同。

    合同表 Orders OrderID Positioncode Startdate Enddate 1 A 2006-11-01 2006-11-03 2 C 2006-11-02 2006-11-0 ...

  7. ios开发之C语言第3天

    变量的命名规则以及规范 变量的命名规则  1>变量名只能由任意的字母,下划线和$以及数字组成,注意不能用数字开头 2>区分大小写 3>变量一定要先定义再使用 4>同一个大括号中 ...

  8. Hbase热点问题

    需求描述:扫描(查询)某个区间--->列用hbase多节点的资源,分布式扫描,加快速度==> 然后拼接到一起 如何打散数据 冠字号逆序,hash 并不一定数据连续就会造成热点,这个是由数据 ...

  9. 使用Runnable接口创建线程-3

    实现Runnable接口的类必须使用Thread类的实例才能创建线程.通过Runnable接口创建线程分为两步: 1. 将实现Runnable接口的类实例化. 2. 建立一个Thread对象,并将第一 ...

  10. Jquery效果代码--(二)

    //jQuery 效果- 隐藏和显示.通过 jQuery,您可以使用 hide() 和 show() 方法来隐藏和显示 HTML 元素: //掩藏效果演示: $(document).ready(fun ...