//弹出pop View view = View.inflate(MyMsgActivity.this, R.layout.msg_pop_layout, null); ////如果想要使用窗口内部的控件,,,必须通过他的视图对象去找 pop_camera = view.findViewById(R.id.pop_camera); pop_picture = view.findViewById(R.id.pop_picture); // 创建一个popupwindow的对象 /** * contentView :popup布局转换成的视图对象 * width:窗口显示的宽度 * height:窗口显示的高度 */ window = new PopupWindow(view, ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); //思考:点击外部不消失 /* * new BitmapDrawable():就是一个透明的背景 */ //如果想要设置点击外部窗口消失,,必须2个方法同时使用 window.setBackgroundDrawable(new BitmapDrawable());//给窗口设置一个完全透明的背景图片 window.setOutsideTouchable(true);//设置窗口外部可以触摸 //思考:窗口里面的控件没有响应 //使用一个setFocusable 就可以实现,,,但是一般这2个方法也会同时使用 window.setTouchable(true);//设置窗口的焦点事件 window.setFocusable(true);//设置窗口本身可以触摸 //进行显示 //window.showAsDropDown(btns);//显示在某控件的正左下方 //window.showAsDropDown(btns, -150, 200);//显示在某控件的左下方(带偏移量) /** * parent:父控件--->popupwindow相对于某个父控件的位置 * gravity:重力方向 * x:x轴的偏移量 * y:y轴的偏移量 */ window.showAsDropDown(view, 0, 0);
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <Button android:id="@+id/pop_camera" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@drawable/selector" android:text="相机" /> <Button android:id="@+id/pop_picture" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@drawable/selector" android:text="相册" /> </LinearLayout>