public class ActivityAsDialog extends AppCompatActivity { @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); this.setContentView(R.layout.layout_register_dialog); //窗口对齐屏幕宽度 Window win = this.getWindow(); win.getDecorView().setPadding(0, 0, 0, 0); WindowManager.LayoutParams lp = win.getAttributes(); lp.width = WindowManager.LayoutParams.MATCH_PARENT; lp.height = WindowManager.LayoutParams.WRAP_CONTENT; lp.gravity = Gravity.TOP;//设置对话框置顶显示 win.setAttributes(lp); //activity 做为dialog使用方法 //1)在style 中定义 // <style name="ActivityAsDialog" parent="Theme.AppCompat.Dialog"> // <!-- Customize your theme here. --> // <!-- AppcompatActivity需要加 --> // <item name="windowNoTitle">true</item> // <item name="android:background">@android:color/transparent</item> // <item name="android:windowIsFloating">false</item> // <item name="android:windowIsTranslucent">true</item> // </style> //2)写一个activity 例如本类ActivityAsDialog //3)在manifest.xml中 // <activity android:name=".acitivitys.ActivityAsDialog" android:theme="@style/ActivityAsDialog"></activity> //4)使用的地方 AndroidUtil.forWardActivity(this,ActivityAsDialog.class); } }
上面的样式,activity会有黑边,不好看
<style name="dialogstyle" parent="Theme.AppCompat.Dialog"> <!--设置dialog的背景--> <item name="android:windowBackground">@android:color/transparent</item> <!--设置Dialog的windowFrame框为无--> <item name="android:windowFrame">@null</item> <!--设置无标题--> <item name="android:windowNoTitle">true</item> <!--是否浮现在activity之上--> <item name="android:windowIsFloating">true</item> <!--是否半透明--> <item name="android:windowIsTranslucent">true</item> <!--设置窗口内容不覆盖--> <item name="android:windowContentOverlay">@null</item> <!--设置动画,在这里使用让它继承系统的Animation.Dialog--> <item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item> <!--背景是否模糊显示--> <item name="android:backgroundDimEnabled">true</item> <!-- 点击空白不消失 --> <item name="android:windowCloseOnTouchOutside">false</item> </style>