public class PopupWindowActivity extends Activity { private Button popBtn = null, mButton; private Context mContext; private PopupWindow mSecondPOPWindow, mFirstPOPWindow = null; private View parientView;
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.volleytest_lay); mContext = this; popBtn = (Button) findViewById(R.id.popBtn);
initPopFirst();
initListener(); }
private void initListener() { // TODO Auto-generated method stub popBtn.setOnClickListener(new OnClickListener() {
@Override public void onClick(View v) { // TODO Auto-generated method stub if (mFirstPOPWindow.isShowing()) { // 隐藏窗口,如果设置了点击窗口外小时即不需要此方式隐藏 mFirstPOPWindow.dismiss(); } else { // 显示窗口 mFirstPOPWindow.showAsDropDown(v); } // 给第二个POP显示时用,解决了嵌套时出现的Unable to add window的问题 parientView = v; }
}); } /** * 初始化第一个POP */ private void initPopFirst() { View firstView = getLayoutInflater().inflate(R.layout.pop_first_lay, null); mFirstPOPWindow = new PopupWindow(firstView, LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT, true); mFirstPOPWindow.setTouchable(true); mFirstPOPWindow.setOutsideTouchable(true); mFirstPOPWindow.setFocusable(true); mFirstPOPWindow.setBackgroundDrawable(new BitmapDrawable()); initPopSecond(); Button btn = (Button) firstView.findViewById(R.id.popFirstBtn); btn.setOnClickListener(new OnClickListener() {
@Override public void onClick(View v) { try { if (mSecondPOPWindow.isShowing()) { // 隐藏窗口,如果设置了点击窗口外小时即不需要此方式隐藏 mSecondPOPWindow.dismiss(); } else { // 显示窗口 mSecondPOPWindow.showAsDropDown(parientView, 500, 500); } } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); }
/*//测试AlertDialog new AlertDialog.Builder(mContext) .setTitle("确认") .setMessage("确定吗?") .setPositiveButton("是", null) .setNegativeButton("否", null) .show();*/
} }); } /** * 初始化第二个POP */ private void initPopSecond() { View popSecView = PopupWindowActivity.this.getLayoutInflater().inflate( R.layout.pop_second_lay, null); mSecondPOPWindow = new PopupWindow(popSecView, LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT, true); mSecondPOPWindow.setTouchable(true); mSecondPOPWindow.setOutsideTouchable(true); mSecondPOPWindow.setFocusable(true); mSecondPOPWindow.setBackgroundDrawable(new BitmapDrawable()); Button popSecondBtn = (Button) popSecView .findViewById(R.id.popSecondBtn); popSecondBtn.setOnClickListener(new OnClickListener() {
@Override public void onClick(View v) { // TODO Auto-generated method stub Toast.makeText(PopupWindowActivity.this, "第二个POP", 100).show(); } }); } } |