Android UI进阶之弹窗的使用

Linux大全评论536 views阅读模式

讲下Android中的PopupWindow。姑且就叫做弹窗吧,其实和AlertDialog一样,也是一种对话框,两者也经常混用,但是也各有特点。

下面就看看使用方法。首先初始化一个PopupWindow 

[java]

  1. PopupWindow  mPop = new PopupWindow(getLayoutInflater().inflate(R.layout.window, null), LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);  

实现PopupWindow的构造函数,第一个参数导入布局,后面两个指定宽和高。

弹窗一般有两种展示方法,用showAsDropDown()和showAtLocation()两种方法实现。一般参数有两种,有偏移和无偏移。

[java]

  1. bt1.setOnClickListener(new OnClickListener(){  
  2.   
  3.     @Override  
  4.     public void onClick(View v) {  
  5.         initPopWindow();  
  6.         mPop.showAsDropDown(v);//以这个Button为anchor(可以理解为锚,基准),在下方弹出   
  7.           
  8.     }});  
  9.         
  10.       bt2.setOnClickListener(new OnClickListener(){  
  11.   
  12.     @Override  
  13.     public void onClick(View v) {  
  14.         initPopWindow();  
  15.         mPop.showAsDropDown(v,20,-20);//横轴偏移20,纵轴-20,一个状态栏的长度   
  16.           
  17.     }});  
  18.         
  19.       bt3.setOnClickListener(new OnClickListener(){  
  20.   
  21.     @Override  
  22.     public void onClick(View v) {  
  23.         initPopWindow();  
  24.         mPop.showAtLocation(PopWindow.this.findViewById(R.id.rl),   
  25.                 Gravity.CENTER, 00);//在屏幕居中,无偏移   
  26.           
  27.     }});  
  28.         
  29.         
  30.       bt4.setOnClickListener(new OnClickListener(){  
  31.   
  32.     @Override  
  33.     public void onClick(View v) {  
  34.         initPopWindow();  
  35.         mPop.showAtLocation(PopWindow.this.findViewById(R.id.rl),   
  36.                 Gravity.TOP | Gravity.LEFT, 2020);//在屏幕顶部|居右,带偏移   
  37.           
  38.     }});  
  39.         
  40.       bt5.setOnClickListener(new OnClickListener(){  
  41.   
  42.     @Override  
  43.     public void onClick(View v) {  
  44.         if (mPop != null) {  
  45.             mPop.dismiss();  
  46.         }  
  47.           
  48.     }});  
  49.         
  50.   }  

其中initPopWindow()方法来初始化一个弹窗

[java]

  1. private void initPopWindow() {  
  2.     if (mPop == null) {  
  3.         mPop = new PopupWindow(getLayoutInflater().inflate(R.layout.pop, null),  
  4.                 LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);  
  5.     }  
  6.     if (mPop.isShowing()) {  
  7.         mPop.dismiss();  
  8.     }  
  9. }  

这里定义了4个按钮来呈现展示效果,一个按钮用来关闭,来看下第三个按钮点击效果,就不一一截图了,大家可以自己试下。

Android UI进阶之弹窗的使用

企鹅博客
  • 本文由 发表于 2019年9月29日 11:05:36
  • 转载请务必保留本文链接:https://www.qieseo.com/173587.html

发表评论