popwondows简单用法

  • 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);
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值