PopupWindow的使用

功能:PopupWindow这个类用来实现一个弹出框,可以使用任意布局的View作为其内容,这个弹出框是悬浮在当前activity之上的。Activity的布局中只有一个按钮,按下后会弹出框,代码如下:

button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { showPopupWindow(view); } }); private void showPopupWindow(View view) { // 一个自定义的布局,作为显示的内容 View contentView = LayoutInflater.from(mContext).inflate(R.layout.pop_window, null); // 设置按钮的点击事件 Button button = (Button) contentView.findViewById(R.id.button1); button.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Toast.makeText(mContext, "button is pressed",Toast.LENGTH_SHORT).show(); } }); //设置popupwindows的长度和宽度(如果popupwindows的大小和手机界面一样大,就没有外部区域) final PopupWindow popupWindow = new PopupWindow(contentView,LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, true); popupWindow.setTouchable(true); //设置popupwindows的触摸事件 popupWindow.setTouchInterceptor(new OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { Log.i("mengdd", "onTouch : "); return false; // 这里如果返回true的话,touch事件将被拦截 // 拦截后 PopupWindow的onTouchEvent不被调用,这样点击外部区域无法dismiss } }); // 如果不设置PopupWindow的背景,无论是点击外部区域还是Back键都无法dismiss弹框 // 我觉得这里是API的一个bug popupWindow.setBackgroundDrawable(getResources().getDrawable(R.drawable.selectmenu_bg_downward)); // 设置好参数之后再show popupWindow.showAsDropDown(view); }




你可能感兴趣的:(PopupWindow)