popwondows简单用法

    xiaoxiao2025-06-14  22

    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); }
    转载请注明原文地址: https://ju.6miu.com/read-1299934.html
    最新回复(0)