Android中文API——PopupWindow

此文上半部分为本人翻译API文档,下半部分转自网友分享资料。

API文档

继承树
java.lang.Object
? android.widget.PopupWindow

  • 概述:
    popupWindow,顾名思义,用作在当前Activity前弹出一个界面,这个界面可以用来展示任何类型的View。

  • 公共的构造器

PopupWindow() 
PopupWindow(Context context) 
PopupWindow(Context context, AttributeSet attrs) 
PopupWindow(Context context, AttributeSet attrs, int defStyle) 
PopupWindow(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) 
//以上几种构造方法都是创建一个空的、没有获取焦点的、长宽尺寸均为0的popup window。
//(使用较少)
PopupWindow(View contentView, int width, int height) 
//创建一个没有获取焦点、长为width、宽为height,内容为contentView的popup window.
PopupWindow(View contentView, int width, int height, boolean focusable) 
//类似上面那个,但第四个参数可以控制是否获取焦点
//(这2种使用较多)!!!!
  • 公共方法
void  dismiss() 
//使popup window消失

int  getAnimationStyle() 
//返回该popup window出现或消失的动画类型,返回值为整型

Drawable  getBackground() 
//返回popup window的背景,返回值为Drawable类型

void  setContentView(View contentView) 
//设置该popup window显示的内容
View  getContentView() 
//返回popup window展示的内容,返回值为一个View

int  getHeight() 
//返回该popup window的高度值,返回值为int型

void  setFocusable(boolean focusable) 
//设置该popup window是否获得焦点

void  setInputMethodMode(int mode) 
/*设置输入法的模式,参数为这三个:INPUT_METHOD_FROM_FOCUSABLE(根据是否可以获得焦点决定), INPUT_METHOD_NEEDED(允许输入法), or INPUT_METHOD_NOT_NEEDED(不允许输入法)。
当popup window中包含EditText时可能会涉及这方面,可能是出现输入法显示在popup window后面,导致无法输入的问题,可以修改焦点和这里。*/

int  getInputMethodMode() 
//返回当前popup window对输入法的设置模式

int  getMaxAvailableHeight(View anchor) 
//返回能使当前popup window完整显示的最大高度

int  getMaxAvailableHeight(View anchor, int yOffset) 
//同上

void  setSoftInputMode(int mode) 
//设置输入法的操作模式

int  getSoftInputMode() 
//获得输入法的操作模式

int  getWidth() 
Return this popup‘s width MeasureSpec

void  setHeight(int height) 
Change the popup‘s height MeasureSpec

boolean  isAboveAnchor() 
//判断popup window是否超出了父View的布局之外

boolean  isFocusable() 
//判断当前popup window是否获得焦点

boolean  isOutsideTouchable() 
//判断当前pw的外界触碰是否有响应

boolean  isShowing() 
//判断当前popup window是否处于显示状态

boolean  isSplitTouchEnabled() 
//判断当前pw是否支持多点触碰

boolean  isTouchable() 
//判断当前pw是否接受触摸事件

void  setAnimationStyle(int animationStyle) 
//设置popup window的动画样式,有什么样式去Animation

void  setBackgroundDrawable(Drawable background)
//设置pw背景

void  setClippingEnabled(boolean enabled) 
/*允许弹出窗口超出屏幕范围。默认情况下,窗口被夹到屏幕边界。设置为false将允许Windows精确定位。也就是说,如果这个Popupwindow显示区域 不足或者层叠将导致绘制位置计算不准确,需要手动设置为false */
boolean  isClippingEnabled() 
Indicates whether clipping of the popup window is enabled.
void  setIgnoreCheekPress() 

/*这个以前我也没见过,还蛮好玩。
设置是否忽略“脸颊触碰”,默认为false,即不忽略。
什么是“脸颊触碰”? Events都有一个大小,当Events的大小比手指尺寸大时即为CheekPress,这个可能常用于打电话时脸颊碰到屏幕的情况*/

void  setOnDismissListener(PopupWindow.OnDismissListener onDismissListener) 
//popup window消失时的回调方法

void  setOutsideTouchable(boolean touchable) 
/*控制popup window以外的区域被点击后是否有影响,一般与setTouchInterceptor配合使用*/

void  setSplitTouchEnabled(boolean enabled) 
//是否允许分开、多点触控,一般很少用,不容易控制

void  setTouchInterceptor(View.OnTouchListener l) 
/*当popup window被触碰时的回调方法*/

void  setTouchable(boolean touchable) 
//设置popup window是否可触碰

void  setWidth(int width) 
/*修改popup window的宽度,如果已经显示了popup window,修改后不会立即更新。只有下次出现或者调用update()方法才会更新*/

void  setWindowLayoutMode(int widthSpec, int heightSpec) 
//改变popup管理的window的尺寸

void  showAsDropDown(View anchor) 
/*(anchor,顾名思义:锚。)
以触发弹出窗的anchor为基准,出现在anchor的正下方,弹出的pop_view左上角正对view的左下角,偏移量默认为0,0*/

void  showAsDropDown(View anchor, int xoff, int yoff)
/* 有参数的话,就是以anchor的左下角进行偏移,xoff正的向右,负的向左. yoff,正的向下,负的向上*/ 

void  showAsDropDown(View anchor, int xoff, int yoff, int gravity)
/*和上一种相似,这个用的比较少*/

void  showAtLocation(View parent, int gravity, int x, int y) 
/*在特定的地点弹出一个window显示指定的内容
parent:传你当前Layout的id;  
gravity:Gravity.BOTTOM(以屏幕左下角为参照),偏移量会以它为基准点 
当x y为0,0是出现在底部居中*/

void  update(View anchor, int width, int height)  
void  update(int x, int y, int width, int height) 
void  update(View anchor, int xoff, int yoff, int width, int height) 
Updates the position and the dimension of the popup window.
void  update() 
void  update(int x, int y, int width, int height, boolean force) 
void  update(int width, int height) 
/*都是更新popup window的尺寸和位置,取决于你是在参数里进行改变,还是调用setWidth等方法改变后再更新*/

Android PopupWindow的使用和分析

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。