博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android—PopupWindow的简单使用
阅读量:4707 次
发布时间:2019-06-10

本文共 3286 字,大约阅读时间需要 10 分钟。

PopupWindow 是一个可以显示在当前 Activity 之上的浮动容器,这个Demo要实现的功能是,点击布局中的两个按钮,进而控制PopupWindow的显示与消失,代码中有详细的注释首先看一下效果展示:

在上代码之前,先总结一下PopupWindow的用法:
1:实例化PopupWindow的对象,三个参数分别对应:填充的布局文件、在当前Activity上所占的宽、高PopupWindow popupWindow= new PopupWindow(contentView, LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT);2:完成第一步所需要的布局文件,并实例出来View contentView = mLayoutInflater.inflate(R.layout.pop, null)3:设置PopupWindow 所必备的两个属性     //popupWindow的背景 (1)popupWindow.setBackgroundDrawable(......);       //popupWindow要显示的位置 (2)popupWindow.showAtLocation(View parent, int gravity, int x, int y)
接下来,上代码!popupWindow所要添加的布局文件:popu_layout.xml
相当简单的布局,做出来就是这么一个玩意:

MainActivity:
1 package com.example.wgh.popupwindow; 2 import android.graphics.drawable.ColorDrawable; 3 import android.support.v7.app.AppCompatActivity; 4 import android.os.Bundle; 5 import android.view.Gravity; 6 import android.view.LayoutInflater; 7 import android.view.View; 8 import android.widget.Button; 9 import android.widget.GridLayout;10 import android.widget.PopupWindow;11 12 public class MainActivity extends AppCompatActivity {13 14     private View mPopView = null;15     private Button showPopupWindow = null;16     private Button dismissPopupWindow = null;17     @Override18     protected void onCreate(Bundle savedInstanceState) {19         super.onCreate(savedInstanceState);20         setContentView(R.layout.activity_main);21 22         initView();23         showPopupWindow.setOnClickListener(new View.OnClickListener() {24             @Override25             public void onClick(View view) {26                 showPopupWindow();27             }28         });29     }30 31     private void initView() {32         showPopupWindow = (Button) findViewById(R.id.showPopupWindow);33         dismissPopupWindow = (Button) findViewById(R.id.dismissPopupWindow);34         /**35          * 实例popupWindow要添加的布局36          */37         mPopView = LayoutInflater.from(this).inflate(R.layout.popu_layout, null);38     }39 40     private void showPopupWindow() {41         /**42          * 实例popupWindow对象43          */44         PopupWindow popupWindow = new PopupWindow(mPopView, GridLayout.LayoutParams.MATCH_PARENT, GridLayout.LayoutParams.WRAP_CONTENT);45         //设置popupWindow中的item可以被点击,这句话是必须要添加的46         popupWindow.setFocusable(true);47         //设置PopupWindow的背景48         //如果不设置背景,会导致无论是点击外部区域还是Back键都无法dismiss掉popupWindow49         ColorDrawable dw = new ColorDrawable(0xb0000000);50         popupWindow.setBackgroundDrawable(dw);51         //设置popupWindow显示的位置52         popupWindow.showAtLocation(showPopupWindow, Gravity.BOTTOM,0,200);53     }54 }
最后说一下关于popupWindow显示位置的属性设置
1 // 相对某个控件的位置(正左下方),无偏移2 popupWindow.showAsDropDown(View anchor) 3 // 相对某个控件的位置,有偏移,xoff 为 X 轴的偏移量,yoff 为 Y 轴的偏移量                          4 popupWindow.showAsDropDown(View anchor, int xoff, int yoff)5 // 在父容器的什么位置,gravity 为相对位置,6 //如:正中央 Gravity.CENTER、下方 Gravity.BOTTOM、Gravity.RIGHT|Gravity.BOTTOM 右下方等,后面两个参数为 x/y 轴的偏移量。7 popupWindow.showAtLocation(View parent, int gravity, int x, int y)

有兴趣的童鞋可以为popupWindow设置上动画,这样在弹出的时候,不会显得那么突兀,哈哈 

如果有什么地方是错误的,请大家批评指正。

转载于:https://www.cnblogs.com/upwgh/p/5910261.html

你可能感兴趣的文章
一行最大公约数
查看>>
The Pilots Brothers' refrigerator 分类: ...
查看>>
Children of the Candy Corn 分类: POJ ...
查看>>
给傻瓜用的HTML5编程和JavaScript--第一部分--理解JS基础--第一章节--HTML,向JS说Hello...
查看>>
[Java] Frequently used method or solutions for issues
查看>>
POJ 3090 Visible Lattice Points (ZOJ 2777)
查看>>
解决Win8/8.1无法正确识别USB3.0的问题
查看>>
HDU 2587 - 很O_O的汉诺塔
查看>>
java中,什么是构造函数?什么是构造函数重载?什么是复制构造函数?
查看>>
centOS下实践查询版本/CPU/内存/硬盘容量等硬件信息
查看>>
函数式语言
查看>>
SQL Server系统视图sys.master_files不能正确显示数据库脱机状态
查看>>
oracle如何判断字段是数字还是字符
查看>>
eclipse启动失败,加载到loading workbench时,停止或者闪退的解决办法
查看>>
Eclipse如何解决启动慢?
查看>>
微信小程序 图片路径自动加上文件目录导致渲染报错问题
查看>>
win10下MySql问题navicat显示Navicat 2003-can't connect to MYSQL server on 'localhost'(10061)
查看>>
android获取APP 包名和activity
查看>>
列表【二】
查看>>
PHP算法每日一练 -- 单链表
查看>>