文档章节

popupwindow popupmenu dialog

当空皓月
 当空皓月
发布于 2014/10/29 17:47
字数 814
阅读 770
收藏 6
点赞 0
评论 0

private void iniPopupWindow() {

  LayoutInflater inflater = (LayoutInflater) this .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
  View layout = inflater.inflate(R.layout.task_detail_popupwindow, null);
  pwMyPopWindow = new PopupWindow(layout);
  pwMyPopWindow.setFocusable(true);// 加上这个popupwindow中的ListView才可以接收点击事件

  lvPopupList.setAdapter();

  // 控制popupwindow点击屏幕其他地方消失
  pwMyPopWindow.setBackgroundDrawable(this.getResources().getDrawable(
    R.drawable.bg_popupwindow));// 设置背景图片,不能在布局中设置,要通过代码来设置
  pwMyPopWindow.setOutsideTouchable(true);// 触摸popupwindow外部,popupwindow消失。这个要求你的popupwindow要有背景图片才可以成功,如上

 

// 更多操作按钮
  ibOperationMore = (ImageButton) findViewById(R.id.ib_operate_more);
  ibOperationMore.setOnClickListener(new OnClickListener() {

   @Override
   public void onClick(View v) {

    if (pwMyPopWindow.isShowing()) {

          pwMyPopWindow.dismiss();// 关闭
    } else {

     pwMyPopWindow.showAsDropDown(ibOperationMore);// 显示
    }

   }
  });

 

 

在Android中我们经常会用AlertDialog来显示对话框。通过这个对话框是显示在屏幕中心的。但在某些程序中,要求对话框可以显示在不同的位置。例如,屏幕的上方或下方。要实现这种效果。就需要获得对话框的Window对象,获得这个Window对象有多种方法。最容易的就是直接通过AlertDialog类的getWindow方法来获得Window对象。 
AlertDialog dialog = new AlertDialog.Builder(this).setTitle("title")    
                     .setMessage("message").create();    
Window window = alertDialog.getWindow();       
window.setGravity(Gravity.TOP);   //window.setGravity(Gravity.BOTTOM);     

alertDialog.show(); 
透明的对话框 
默认显示的对话框是不透明的,但我们可以通过设置对话框的alpha值将其变成透明或半透明效果。我们都知道。颜色由R(红)、G(绿)、B(蓝)组成。除此之外,还会有一个A(透明度,Alpha)来描述颜色。在颜色的描述中,如果该值为0表示完全透明,如果该值为255,表示不透明。 
通过设置Windows的alpha属性也可以设置对话框的透明度。但alpha的取值范围是从0到1.0。如果该属性值为0,表示完全透明,如果该值为1.0,表示不透明(也就是正常显示的对话框)。
透明的对话框。在本例中加了一个背景图像,将同时显示了两个对话框(一个是半透明的,另一是不透明的)。 
//显示透明的对话框        
   AlertDialog alertDialog = new AlertDialog.Builder(this).setMessage(       
           "透明对话框").setPositiveButton("确定", null).create();       
   Window window = alertDialog.getWindow();       
   WindowManager.LayoutParams lp = window.getAttributes();       
   // 设置透明度为0.3        
   lp.alpha = 0.6f;       
    window.setAttributes(lp);       
    alertDialog.show();      

我们在使用某些应用时会发现当弹出对话框或某些模式窗口时,后面的内容会变得模糊或不清楚。实际上,这些效果也很容易在OPhone中实现。为了实现这个功能,我们只需要设置Wndow对象的两个标志即可,代码如下: 
window.setFlags(WindowManager.LayoutParams.FLAG_BLUR_BEHIND,     
 WindowManager.LayoutParams.FLAG_BLUR_BEHIND);

popupWindow 在控件的各个方向上的显示(上、下、左、右)

http://blog.csdn.net/dxj007/article/details/8026691

// 相对某个控件的位置(正左下方),无偏移pop.showAsDropDown(View anchor) 
// 相对某个控件的位置,有偏移,xoff 为 X 轴的偏移量,yoff 为 Y 轴的偏移量                          pop.showAsDropDown(View anchor, int xoff, int yoff)// 在父容器的什么位置,gravity 为相对位置,如:正中央 Gravity.CENTER、下方 Gravity.BOTTOM、Gravity.RIGHT|Gravity.BOTTOM 右下方等,后面两个参数为 x/y 轴的偏移量。pop.showAtLocation(View parent, int gravity, int x, int y)


dialog对话框:

Android自定义对话框(Dialog)位置,大小

http://www.cnblogs.com/angeldevil/archive/2012/03/31/2426242.html 

 dialogLayoutParams.width = LocalUtils.getScreen(context)[0]/2+70;

        dialogLayoutParams.height = LocalUtils.getScreen(context)[1]/3+50;

        dialogLayoutParams.y=50;

        window.setAttributes(dialogLayoutParams);

        window.setGravity(Gravity.BOTTOM);

这样设置会使对话框距离底部50

© 著作权归作者所有

共有 人打赏支持
当空皓月
粉丝 13
博文 179
码字总数 67070
作品 0
郑州
Android:PopupWindow

一、概述 1、构造方法 部分常用: PopupWindow(View contentView, int width, int height)Create a new non focusable popup window which can display the contentView.PopupWindow(View c......

Xushao
2013/12/16
0
2
Android之自定义AlertDialog和PopupWindow实现(仿微信Dialog)

我们知道,在很多时候,我们都不用Android内置的一些控件,而是自己自定义一些自己想要的控件,这样显得界面更美观。 今天主要是讲自定义AlertDialog和popupWindow的使用,在很多需求中,我们...

moz1q1
2015/08/26
0
1
关于android.view.WindowLeaked异常的解决方案

虽然是小问题一个,但也困扰了我一段时间,现在记下来,给自己做个备忘,也可以给其他人一个参考。 Android.view.WindowLeaked按字面了解,Window Leaked大概就是说一个窗体泄漏了,也就是我...

程序袁_绪龙
2014/11/29
0
0
使用 PopupWindow 的时候遇到Activity com.avcit… has leaked

在OnCreate方法中调用 > popupWindow.showAtLocation(view, Gravity.LEFT Gravity.TOP, x, y); 时,会出现以下错误: 这是因为这个popupWindow依赖的父Activity已经finish()的了,但是它还...

BravoZu
2013/12/27
0
0
Android Activity启动后立即弹出PopupWindow的两个方法

Activity启动后立即弹出PopupWindow的两个方法 若在Activity的onCreate()方法中直接写弹出PopupWindow方法会报错,因为activity没有完全启动是不能 弹出PopupWindow的。 那我们只需要在activ...

扬名立万
2014/05/28
0
0
android PopupWindow简单例子

在android中弹出框有两种方式:AlertDialog和PopupWindow,它们的不同点在于: 1、AlertDialog的位置固定,而PopupWindow的位置可以随意; 2、AlertDialog是非阻塞线程的,而PopupWindow是阻...

贺路的路
2013/07/08
0
4
Android开发中积累的一些报错的解决方法

1.报错: The connection to adb is down, and a severe error has occured. [2012-03-11 09:36:56 - Camera] You must restart adb and Eclipse. [2012-03-11 09:36:56 - Camera] Please en......

IT丶小生
2014/04/21
0
0
Android 中 PopupWindow 在7.0后适配

这里主要记录一次踩坑的经历。 需求:如上图左侧效果,想在按钮的下方弹一个PopupWindow。嗯,很简单一个效果,然当适配7.0后发现这个PopupWindow显示异常,然后网上找到了下面这种方案。 7....

smart_dev
05/17
0
0
使用 PopupWindow 的注意事项

预备知识 使用 PopupWindow 之前, 一定要知道 Android 是怎么响应旋转屏幕的. 如果不知道的话, 那就先去了解下这个知识点. >>> Google 关键词: Android Activity 重建 另外需要知道的就是Pop...

有初啊
2013/11/07
0
2
popupwindow的一些方法

mPop.showAsDropDown(anchor, 0, 0);//设置显示PopupWindow的位置位于View的左下方,x,y表示坐标偏移量 mPop.showAtLocation(findViewById(R.id.parent), Gravity.LEFT, 0, -90);(以某个Vie......

小克898
2013/03/07
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

tomcat虚拟路径的几种配置方法

tomcat虚拟路径的几种配置方法 一般我们都是直接引用webapps下面的web项目,如果我们要部署一个在其它地方的WEB项目,这就要在TOMCAT中设置虚拟路径了,Tomcat的加载web顺序是先加载 $Tomcat_ho...

Helios51
12分钟前
1
0
Mac 安装jupyter notebook的过程

MAC台式机 python:mac下自带Python 2.7.10 1.先升级了pip安装工具:sudo python -m pip install --upgrade --force pip 2.安装setuptools 工具:sudo pip install setuptools==33.1.1 3.安装......

火力全開
17分钟前
0
0
导航守卫解释与例子

“导航”表示路由正在发生改变。 正如其名,vue-router 提供的导航守卫主要用来通过跳转或取消的方式守卫导航。有多种机会植入路由导航过程中:全局的, 单个路由独享的, 或者组件级的。 记住...

tianyawhl
17分钟前
0
0
Java日志框架-logback配置文件多环境日志配置(开发、测试、生产)(原始解决方法)

说明:这种方式应该算是最通用的,原理是通过判断标签实现。 <!-- if-then form --> <if condition="some conditional expression"> <then> ... </then> </if> ......

浮躁的码农
32分钟前
1
0
FTP传输时的两种登录方式和区别

登录方式 匿名登录 用户名为: anonymous。 密码为:任何合法 email 地址。 授权登录 用户名为:用户在远程系统中的用户帐号。 密码为:用户在远程系统中的用户密码。 区别 匿名登录 只能访问...

寰宇01
33分钟前
0
0
plsql developer 配置监听(不安装oracle客户端)

plsql developer 配置监听(不安装oracle客户端)

微小宝
40分钟前
1
0
数据库(分库分表)中间件对比

本人的宗旨就是,能copy的,绝对不手写。 分区:对业务透明,分区只不过把存放数据的文件分成了许多小块,例如mysql中的一张表对应三个文件.MYD,MYI,frm。 根据一定的规则把数据文件(MYD)和索...

奔跑吧代码
44分钟前
2
0
Netty与Reactor模式详解

在学习Reactor模式之前,我们需要对“I/O的四种模型”以及“什么是I/O多路复用”进行简单的介绍,因为Reactor是一个使用了同步非阻塞的I/O多路复用机制的模式。 I/O的四种模型 I/0 操作 主要...

hutaishi
50分钟前
1
0
【2018.07.16学习笔记】【linux高级知识 20.16-20.19】

20.16/20.17 shell中的函数 20.18 shell中的数组 20.19 告警系统需求分析

lgsxp
55分钟前
0
0
用 D3.js 画一个手机专利关系图, 看看苹果,三星,微软间的专利纠葛

用 D3.js 画一个手机专利关系图, 看看苹果,三星,微软间的专利纠葛 前言 本文灵感来源于Mike Bostock 的一个 demo 页面 原 demo 基于 D3.js v3 开发, 笔者将其使用 D3.js v5 进行重写, 并改为...

ssthouse_hust
59分钟前
23
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部