美文网首页
使用 DialogFragment 实现弹窗2-修改样式

使用 DialogFragment 实现弹窗2-修改样式

作者: 111123123 | 来源:发表于2017-09-10 21:44 被阅读0次

    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

    相关文章

      网友评论

          本文标题:使用 DialogFragment 实现弹窗2-修改样式

          本文链接:https://www.haomeiwen.com/subject/yzizjxtx.html