使用DialogFragment创建dialog有2种方式
1.一种是重写onCreateView(),然后加载自定义布局
2.一种是重写onCreateDialog()方法,然后加载自定义布局
使用第二种方式加载自定义布局时要注意加载布局时设置View的宽高
alertDialog = new AlertDialog.Builder(getActivity(), R.style.Theme_Transparent).create();
Window window = alertDialog.getWindow();
window.setGravity(Gravity.CENTER);
window.setWindowAnimations(R.style.dialog_style);
View view = View.inflate(getActivity(), R.layout.recommend_fragment, null);
initView(view);
alertDialog.setView(view, 0, 0, 0, 0);
使用这种方式加载的布局仍然会有黑边,我们需要写一个style,让背景透明
<!-- dialog没有黑边 -->
<style name="Theme_Transparent" parent="@android:Theme.DeviceDefault.Light.Dialog">
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:windowNoTitle">true</item>
</style>
然后使用这个style,这样dialog就没有黑边了
Window window = alertDialog.getWindow();
window.setGravity(Gravity.CENTER);
window.setWindowAnimations(R.style.dialog_style);