一般是通过点击(图片、button等)事件触发的,显示一个PopWindow;
我们点击弹出
但是一般情况下popupWindpw会显示紧挨着被点击的按钮的下面,而不是如图所示的那样,这里就需要设置PopupWindow的显示位置了
private void showPopupWindow(View view){
//一个自定义的布局作为显示的内容
View contentView = LayoutInflater.from(ConvenienceStoreActivity.this).inflate(R.layout.imagebutton_pop_window, null);
WindowManager manger = (WindowManager) getSystemService(ConvenienceStoreActivity.WINDOW_SERVICE);
@SuppressWarnings("deprecation")
int width = manger.getDefaultDisplay().getWidth()/3;
PopupWindow popupWindow = new PopupWindow(contentView,width,300,true);
// 如果不设置PopupWindow的背景,无论是点击外部区域还是Back键都无法dismiss弹框(必须设置)
popupWindow.setBackgroundDrawable(getResources().getDrawable(
R.drawable.pop_window_shape));
popupWindow.setOutsideTouchable(true);
popupWindow.setFocusable(true);
//距离被点击的控件下方15dp
popupWindow.showAsDropDown(view,0,15);//showAsDropDown(View anchor,int xoff ,int yoff);
click(contentView);
}
public void click(View view){//PopWindow的布局控件的点击事件的处理
switch (view.getId()) {
case R.id.about_bianlidian:
Toast.makeText(this, "关于便利店", Toast.LENGTH_SHORT).show();
break;
case R.id.nearby_bianlidian:
Toast.makeText(this, "附近便利店", Toast.LENGTH_SHORT).show();
break;
case R.id.share_bianlidian:
Toast.makeText(this, "分享便利店", Toast.LENGTH_SHORT).show();
showShare();
break;
}
}
此外,你还可以设置:
//获取在屏幕中的坐标
//设置相对于v的位置 或以自己设置
应用:
左边:popupWindow.showAtLocation(v, Gravity.NO_GRAVITY, location[0]-popupWindow.getWidth(), location[1]);
右边:popupWindow.showAtLocation(v,
//居中显示
View v = mInflater.inflate(R.layout.givekala_share, null);