说明:想要实现的效果是自定义布局和Dialog高度相同,则需要使用Dialog而不是AlertDialog,
如果使用AlertDialog则会出现初始自定义布局只是自适应高度并不是指定高度
java
private void initDialogPopu(){
DisplayMetrics displayMetrics = getResources().getDisplayMetrics();
int screenHeight = displayMetrics.heightPixels; // 屏幕总高度(像素)
int height = screenHeight/5*2;
//自定义布局
View view1 = (View) this.getLayoutInflater().inflate(R.layout.popup_window, null);
RecyclerView recyclerView = view1.findViewById(R.id.recyclerView);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
DeviceAdapter adapter = new DeviceAdapter(this,list);
recyclerView.setAdapter(adapter);
adapter.notifyDataSetChanged();
//指定自定义布局高度
view1.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, height));
//AlertDialog alertDialog = new AlertDialog.Builder(this,R.style.TransparentDialog).setView(view1).show();
//创建Dialog并指定style(背景透明样式)
Dialog alertDialog = new Dialog(this,R.style.TransparentDialog);
alertDialog.setContentView(view1);
alertDialog.setOnDismissListener(new DialogInterface.OnDismissListener() {
@Override
public void onDismiss(DialogInterface dialog) {
}
});
//指定Dialog高度
Window window = alertDialog.getWindow();
if (window!=null)
window.setLayout(ViewGroup.LayoutParams.WRAP_CONTENT,height);
alertDialog.show();
}
style样式
XML
<style name="TransparentDialog" parent="Theme.AppCompat.Dialog">
<item name="android:windowBackground">#00000000</item>
</style>
popup_window自定义布局(根部局和列表都要高度设置 android:layout_height="match_parent")
XML
<?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:layout_margin="10dp"
android:padding="10dp"
android:orientation="vertical">
<android.support.v7.widget.RecyclerView
android:id="@+id/recyclerView"
android:overScrollMode="never"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>