PopWindow自由弹窗

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_32216895/article/details/69941501

说明:相对于Dialog弹窗而言 

Dialog弹窗的位置已经被限制在布局的中心,

PopupWindow 则可以使弹窗布局加载到容器布局的任何地方(例如位于点击出现PopupWindow 控件的上、下、左、右方向,再通过偏移量使得布局加载到其他地方)


private PopupWindow popUpWindow;


protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

StorListener  listener= new StorListener ();

setListener();// 设置监听
return view;
}


/**
* 设置监听
*/
private boolean isShow = false;//设置默认为不显示状态
private void setListener() {
tvCheckClasstify.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if(isShow ==false){
isShow = true;
View view = View.inflate(MainActivity.this, R.layout.popwindons_classify_layout, null);
if (popUpWindow == null) {
popUpWindow=new PopupWindow(view,ViewGroup.LayoutParams.WRAP_CONTENT,
                                   ViewGroup.LayoutParams.WRAP_CONTENT);
Log.i("info", "new PopupWindow" + popUpWindow.toString());
// 显示布局、默认在下方
popUpWindow.showAsDropDown(tvCheckClasstify, 0, 0);
}

TextView tvNodel = (TextView) view.findViewById(R.id.tvNodel);
tvNodel.setOnClickListener(listener);
}else{
dismisPopWindons();
}
}
});
}


/**
* 初始化控件

* @param view
*/
private void initView(View view) {
tvCheckClasstify = (TextView) view.findViewById(R.id.tvCheckClasstify);
}


private class StorListener implements OnClickListener {
@Override
public void onClick(View v) {
// 关闭这个菜单/该方法只能关闭一次
// 如多次点击更多创建多余的对象
// 该多余的对象将会无法关闭,就会导致出现oom
switch (v.getId()) {
case R.id.tvNodel:
dismisPopWindons();
break;
default:
break;
}
}
}

/**
* 隐藏窗体
*/
private void dismisPopWindons() {
// TODO Auto-generated method stub
isShow = false;
popUpWindow.dismiss();
Log.i("info", "close PopupWindow" + popUpWindow.toString());
Toast.makeText(MainActivity.this, "测试关闭", 1000).show();
// 不置空下次将不能再进行创建
popUpWindow = null;
}


}

猜你喜欢

转载自blog.csdn.net/qq_32216895/article/details/69941501