Style方式修改
1、添加新的样式,继承自一个 Dialog 基础样式
<style name="Mdialog" parent="android:Theme.Holo.Light.Dialog">
<item name="android:windowBackground"> @color/black</item>
<item name="android:windowFrame">@null</item>
<item name="android:backgroundDimEnabled">false</item>
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowFullscreen">true</item>
<item name="android:windowContentOverlay">@null</item>
</style>
2、在DialogFragment的onCreate方法里进行设置
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setStyle(DialogFragment.STYLE_NO_TITLE, R.style.Mdialog);
}
代码修改
//在onCreate或者onCreateView都可以
getDialog().getWindow().requestFeature(Window.FEATURE_NO_TITLE);
getDialog().getWindow().setBackgroundDrawable(new ColorDrawable(Color.RED));
getDialog().getWindow().setDimAmount(0.5f);//背景黑暗度
或
// 设置宽度为屏宽, 靠近屏幕底部。
Window window = getDialog().getWindow();
WindowManager.LayoutParams lp = window.getAttributes();
lp.gravity = Gravity.BOTTOM; // 紧贴底部
lp.width = WindowManager.LayoutParams.MATCH_PARENT; // 宽度持平
window.setAttributes(lp);
接口支持
控件有一个 setStyle 方法
方法原型:
void setStyle (int style, int theme)
参数:
style: 四个选项: STYLE_NORMAL, STYLE_NO_TITLE, STYLE_NO_FRAME, or STYLE_NO_INPUT.
theme:可选,默认是0
style参数用来设置一些通用设置,但是可能会被theme覆盖
ps: Calling this after the fragment's Dialog is created will have no effect.
参考
Android 撸起袖子,自己封装 DialogFragment
DialogFragment实现底部弹窗
DialogFragmentDemos
网友评论