要弹出PopupWindow窗口的布局

<?xmlversion="1.0"encoding="utf-8"?><LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="wrap_content"android:background="#FFBBFFBB"android:orientation="vertical"><TextViewandroid:layout_width="match_parent"android:layout_height="wrap_content"android:padding="10dp"android:text="HelloMyWindow"android:textSize="20sp"/><Buttonandroid:id="@+id/button1"android:layout_width="match_parent"android:layout_height="wrap_content"android:padding="10dp"android:text="Button"android:textSize="20sp"/></LinearLayout>


//当前activity

packagecom.example.testpopwindow;importandroid.os.Bundle;importandroid.app.Activity;importandroid.content.Context;importandroid.util.Log;importandroid.view.Gravity;importandroid.view.LayoutInflater;importandroid.view.MotionEvent;importandroid.view.View;importandroid.view.View.OnClickListener;importandroid.view.View.OnTouchListener;importandroid.view.ViewGroup.LayoutParams;importandroid.widget.Button;importandroid.widget.PopupWindow;importandroid.widget.Toast;publicclassMainActivityextendsActivity{privateContextmContext=null;@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);mContext=this;Buttonbutton=(Button)findViewById(R.id.button);button.setOnClickListener(newView.OnClickListener(){@OverridepublicvoidonClick(Viewview){showPopupWindow(view);}});}privatevoidshowPopupWindow(Viewview){//一个自定义的布局,作为显示的内容ViewcontentView=LayoutInflater.from(mContext).inflate(R.layout.pop_window,null);//设置按钮的点击事件Buttonbutton=(Button)contentView.findViewById(R.id.button1);button.setOnClickListener(newOnClickListener(){@OverridepublicvoidonClick(Viewv){Toast.makeText(mContext,"buttonispressed",Toast.LENGTH_SHORT).show();}});finalPopupWindowpopupWindow=newPopupWindow(contentView,LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT,true);popupWindow.setTouchable(true);popupWindow.setTouchInterceptor(newOnTouchListener(){@OverridepublicbooleanonTouch(Viewv,MotionEventevent){Log.i("mengdd","onTouch:");returnfalse;//这里如果返回true的话,touch事件将被拦截//拦截后PopupWindow的onTouchEvent不被调用,这样点击外部区域无法dismiss}});//如果不设置PopupWindow的背景,无论是点击外部区域还是Back键都无法dismiss弹框//我觉得这里是API的一个bugpopupWindow.setBackgroundDrawable(getResources().getDrawable(R.drawable.ic_launcher));//设置好参数之后再show//popupWindow.showAsDropDown(view);popupWindow.showAtLocation(view,Gravity.CENTER,0,0);}}

<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"><Buttonandroid:id="@+id/button"android:layout_width="match_parent"android:layout_height="wrap_content"android:gravity="center"android:text="弹窗"/></LinearLayout>