第一种:
//第一种创建Dialog的方式
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
getDialog().setCanceledOnTouchOutside(true);//设置点击外部Dialog消失
getDialog().getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));//设置Dialog外部透明
getDialog().requestWindowFeature(Window.FEATURE_NO_TITLE);//去掉Dialog标题
View view = inflater.inflate(R.layout.dialog_fragment_layout, container, false);//传入Dialog布局文件
return view;
}
//实现去标题效果除了onCreateView里的写法外,还可以这么写,必须放在onCreate里
// @Override
// public void onCreate(Bundle savedInstanceState) {
// super.onCreate(savedInstanceState);
// setStyle(DialogFragment.STYLE_NO_TITLE,
// android.R.style.Theme_Holo_Light_Dialog_MinWidth);//必须放到此处起作用
// }
@Override
public void onStart() {
super.onStart();
//控制Dialog在Window中的宽度和高度
WindowManager.LayoutParams lp = getDialog().getWindow().getAttributes();
lp.y = 100;
lp.x = 0;
lp.width = (int) (getScreenWidth()*0.8);
lp.height = (int) (getScreenHeight() * 0.6);
getDialog().getWindow().setAttributes(lp);
}
//获取屏幕宽度
public int getScreenWidth() {
DisplayMetrics dm = getResources().getDisplayMetrics();
return dm.widthPixels;
}
//获取屏幕高度
public int getScreenHeight() {
DisplayMetrics dm = getResources().getDisplayMetrics();
Log.e("screenHeight",dm.heightPixels+"");
return dm.heightPixels;
}
第二种方式和产生一个AlertDialog相似:
@NonNull
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
final AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
LayoutInflater inflater = getActivity().getLayoutInflater();
View contentView = inflater.inflate(R.layout.dialog_test2_fragment_layout,null);
builder.setView(contentView).setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
}).setNegativeButton("取消",null);
return builder.create();
}