O projeto requer que a janela pop-up desfoque o fundo. Após definir o plano de fundo, verifica-se que clicar na área externa da janela pop-up não iluminará o fundo. O código a seguir resolve todos os problemas.
Clique na janela pop para aparecer no onclick
case 1 : //弹出popWiondw View.OnClickListener itemsOnClicks = new View.OnClickListener() { @Override public void onClick (View v) { menuWindow .dismiss() ; fundoAlfa( 1f ) ; } } ; fundoAlfa( 0,5f ) ; menuWindow = nova categoriaPopWiondow(getContext() , itemsOnClicks) ; menuWindow .setBackgroundDrawable( new BitmapDrawable()) ; //位置 // menuWindow.showAtLocation(getActivity().findViewById(R.id.tv_category), Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL, 0, 0); menuWindow .showAtLocation(getActivity().findViewById(R.id. tv_category ) , Gravity. CENTER , ViewGroup.LayoutParams. FILL_PARENT , ViewGroup.LayoutParams. WRAP_CONTENT ) ; menuWindow .setOnDismissListener( new PopupWindow.OnDismissListener() { @Override public void onDismiss () { menuWindow .dismiss() ; backgroundAlpha( 1f ) ; } }) ; quebrar;
/** * Define a transparência do plano de fundo da tela adicionada * @param bgAlpha */ public void backgroundAlpha ( float bgAlpha) { WindowManager.LayoutParams lp = getActivity().getWindow().getAttributes() ; lp.alpha= bgAlpha ; / /0.0 -1.0 getActivity().getWindow().setAttributes(lp) ; getActivity( ) .getWindow().addFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND) ; }