【Android】直接利用View创建Dialog

来源:互联网 发布:金融征信软件 编辑:程序博客网 时间:2024/06/03 20:29

项目需求,代码如下:

final Dialog dialog = new Dialog(context);                dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);                dialog.setCancelable(false);                dialog.setContentView(yourView);                dialog.show();

设置dialog背景透明:

dialog.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));

利用style修改:

    <style name="NewDialog">        <item name="android:windowFrame">@null</item>        <item name="android:windowBackground">@android:color/transparent</item>        <item name="android:windowIsFloating">false</item>        <item name="android:windowContentOverlay">@null</item>        <item name="android:windowTitleStyle">@null</item>        <item name="android:windowAnimationStyle">@null</item>        <item name="android:windowSoftInputMode">stateUnspecified|adjustPan</item>        <item name="android:backgroundDimEnabled">false</item>        <item name="android:background">@android:color/transparent</item>    </style>

其中 android:windowIsFloating这一项可配合windowManager layoutParam设置dialog的宽高,以及出现的位置,我的最终代码为:

                dialog = new Dialog(context, R.style.NewDialog);                dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);//                dialog.setCancelable(true);//                dialog.setContentView(bannerView);                // set position                // Setting dialogview                Window window = dialog.getWindow();                window.setGravity(Gravity.TOP);                WindowManager.LayoutParams param = window.getAttributes();                param.gravity = Gravity.TOP | Gravity.CENTER_HORIZONTAL;                param.y = 100;                window.setAttributes(param);//                window.clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);                window.setLayout(WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.WRAP_CONTENT);                window.setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);                dialog.setTitle(null);                dialog.setCancelable(true);                setOntouchDispose(context);                dialog.setContentView(bannerView);                dialog.show();
0 0
原创粉丝点击