PopupWindow 学习总结

http://wenku.baidu.com/link?url=d48Zr6m7XJq-2JagViGTtVhsvGNHoBg9bHJCbQUJSb5tjRPx9ecavBNlL71ywrT8josV7b9_V_P6nVl2mUJiSrIjkWIBvy3P7R7nh1Jthpe

PopupWindow

学习总结

 

 

经过一段时间的学习

,

了解了

PopupWindow

的基本用法

,

如下

1

、为

PopupWindow

view

布局,通过

LayoutInflator

获取布局的

view.

LayoutInflater inflater =(LayoutInflater)     

   

   

  

this

.

anchor

.getContext().getSystemService(Context.

LAYOUT_INFLATER_SERVI

CE

); 

 

 

 

 

View textEntryView =  

inflater.inflate(R.layout.

paopao_alert_dialog

null

); 

    

   

 

2

、显示位置,可以有很多方式设置显示方式

 

pop.showAtLocation(findViewById(R.id.ll2), Gravity.LEFT, 0, -90); 

 

3

、进出场动画

 

pop.setAnimationStyle(R.style.PopupAnimation); 

 

4

、点击

PopupWindow

区域外部

,PopupWindow

消失

 

 

 

 

this

.

window

 = 

new

 PopupWindow(anchor.getContext()); 

 

this

.

window

.setTouchInterceptor(

new

 OnTouchListener() { 

 

@Override

 

 

public

 

boolean

 onTouch(View v, MotionEvent event) { 

 

 

if

(event.getAction() ==MotionEvent.

ACTION_OUTSIDE

) {     

   

   

   

 

 

 

 

BetterPopupWindow.

this

.

window

.dismiss(); 

 

 

 

return

 

true

 

 

 

 

return

 

false

 

}); 

 

 

      

教训:

 

 

 

 

1

 

PopuWindow 

的大小由下面代码控制;

 

newPopupWindow(view, ViewGroup.LayoutParams.FILL_PARENT, 

ViewGroup.LayoutParams.WRAP_CONTENT)

 

2

 

popuWindow.

showAsDropDown(v);

方法是将

PopuWindow

显示在

View v

的左下方;

 

3

 

需要顺利让

PopUpWindow dimiss

(即点击

PopuWindow

之外的地方此或者

back

PopuWindow

会消失);

PopUpWindow

的背景不能为空。必须在

popuWindow.showAsDropDown(v);

或者其它的显示

PopuWindow

方法之前设置它的背景不为

空:如下面两行代码:

 

ColorDrawablecd = new ColorDrawable(-0000); 

popuWindow.setBackgroundDrawable(cd); 

popuWindow.showAsDropDown(v); 

注意这里设置背景并不会覆盖

xml

文件定义的背景。

 

4

 

当有

popuWindow.setFocusable(false);

的时候,说明

PopuWindow

不能获得焦点,即使

设置设置了背景不为空也不能点击外面消失,只能由

dismiss()

消失,但是外面的

View

的事件

还是可以触发

,back

键也可以顺利

dismiss

掉。当设置为

popuWindow.setFocusable(true);

时候,加上下面两行设置背景代码,点击外面和

Back

键才会消失。

 

5

 

// 

这里设置显示

PopuWindow

之后在外面点击是否有效。如果为

false

的话,那么点击

PopuWindow

外面并不会关闭

PopuWindow

。当然这里很明显只能在

Touchable

下才能使

用。

 

popuWindow.setOutsideTouchable(true);

原文地址:https://www.cnblogs.com/bigben0123/p/4156107.html