popwondows简单用法

来源:互联网 发布:windows ab 压力测试 编辑:程序博客网 时间:2024/06/06 00:09
  • PopupWindow,可以在当前屏幕的上层的显示一个弹窗,这个弹出框是悬浮在当前activity之上的,可以指定弹窗的位置以及背景色等特性,可以使用任意布局的View作为其内容。
private void showPopupWindow(View view) {    LayoutInflater mLayoutInflater = (LayoutInflater)getSystemService(LayoutInflaterService);    // 一个自定义的布局,作为显示的内容    View contentView= mLayoutInflater.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(this, "button is pressed",                        Toast.LENGTH_SHORT).show();            }        });        // 第一个参数view,后面两个指定宽和高        final PopupWindow popupWindow = new PopupWindow(contentView,                LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);        popupWindow.setTouchable(true);        popupWindow.focusable = true;// 设置此参数获得焦点,否则无法点击        popupWindow.OutsideTouchable = true;// 设置点击窗口外边窗口消失,        ColorDrawable dw = new ColorDrawable(Color.Transparent);        // SetBackground必须设置,如果不设置的话,点击外部区域和Back键都无法dismiss弹框        popupWindow.SetBackgroundDrawable(dw);        // 弹窗一般有两种展示方法,用showAsDropDown()和showAtLocation()两种方法实现。        popupWindow.ShowAtLocation(view, GravityFlags.Center, 0, 0);        //popupWindow.showAsDropDown(view);        popupWindow.Update();        view.FocusableInTouchMode = true;                popupWindow.setTouchInterceptor(new OnTouchListener() {            @Override            public boolean onTouch(View v, MotionEvent event) {                Log.i("mengdd", "onTouch : ");                return false;                // 这里如果返回true的话,touch事件将被拦截                // 拦截后 PopupWindow的onTouchEvent不被调用,这样点击外部区域无法dismiss            }        });    }
    /// <summary>    /// 登录按钮事件    /// </summary>    /// <param name="sender"></param>    /// <param name="e"></param>    void loginbtn_Click(object sender, EventArgs e)    {          if(popupWindow != null && popupWindow.IsShowing)           {            popupWindow.dismiss();            return;          }          showPopupWindow(Resource.Layout.layout_main);    }
0 0