PopupWindon与Dialog功能相似,PopupWindon是阻塞式对话框,Dialog是非阻塞式对话框。可按需要自由选择
与上篇介绍的Dialog一样,这里就不多说了,上代码
public class MainActivity extends AppCompatActivity { private PopupWindow popupWindow; private Button btn,back; private EditText username,password; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btn= (Button) findViewById(R.id.btn); btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { showDialog(); } }); } //显示popupWindow的方法 private void showDialog(){ //加载布局 View view= LayoutInflater.from(this).inflate(R.layout.dialog_layout,null); //实例化popupWindow,这里有几个属性,分别是View、显示的宽和高,还有一个是是否设置焦点,可按需要选择 popupWindow=new PopupWindow(view,500,400,true); //设置popupWindow的位置,距X轴和Y轴的距离,还有显示的位置,相对的组件 popupWindow.showAtLocation(btn, Gravity.NO_GRAVITY,100,500); //由于popupWindow是阻塞式的Dialog,所以这里给popupWindow设置一个监听按钮,让它dismiss()掉 back= (Button) view.findViewById(R.id.back); back.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { popupWindow.dismiss(); } }); } }