先创建一个底部弹窗的资源文件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:background="#fff"
android:layout_height="match_parent"
android:orientation="vertical">
<View
android:background="#dfd5d4"
android:layout_width="match_parent"
android:layout_height="1dp"/>
<TextView
android:id="@+id/tv_take_pictures"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:padding="16dp"
android:text="拍照"
android:textColor="#000" />
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="#dfd5d4" />
<TextView
android:id="@+id/tv_open_album"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:padding="16dp"
android:text="相册"
android:textColor="#000" />
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="#dfd5d4" />
<TextView
android:id="@+id/tv_cancel"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:padding="16dp"
android:text="取消"
android:textColor="#000" />
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="#dfd5d4" />
</LinearLayout>
然后先载入这个弹窗视图的布局,第一个参数填自己的活动类的连接,第二个参数是弹窗布局,第三个为null。
View contentView = View.inflate(PersonSet.this, R.layout.dialog_bottom, null);
创建一个弹窗视图对象 第一个参数是载入的弹窗布局 第二参数是宽高,-1是跟父盒子一样宽,-2是自适应
PopupWindow pop = new PopupWindow(contentView, -1, -2)
设置点击哪个按钮,弹窗布局出现,第二参数是弹窗的位置,这里设置了底部,后面两个参数是点击位置,都写成0即可。
pop.showAtLocation( findViewById(R.id.person_change_header), Gravity.BOTTOM, 0, 0);
然后设置点击后背景色整体背景色发生变暗效果,否则不好看,先获取屏幕信息设置成对象,然后调用亮度参数为0.5f 然后再设置参数,重写Poppupwindow的关闭视图方法,把这个参数改成1f,就变回了原来的颜色。
final WindowManager.LayoutParams lp = getWindow().getAttributes();
lp.alpha = 0.5f;
getWindow().setAttributes(lp);
pop.setOnDismissListener(new PopupWindow.OnDismissListener() {
@Override
public void onDismiss() {
lp.alpha = 1f;
getWindow().setAttributes(lp);
}
});