先看下Java的
其实这种不是特别好
这种是用了Dialog本身的样式
public class MyTestDialog extends Dialog { public MyTestDialog(@NonNull Context context) { super(context); } public MyTestDialog(@NonNull Context context, int themeResId) { super(context, themeResId); } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.dialog); } }
然后看下Kotlin的
class TestDialog(context: Context) : Dialog(context, R.style.Theme_Common_Dialog) { init { val binding = LayoutInflater.from(context).inflate(R.layout.dialog, null) setContentView(binding) } }
<!--Dialog弹框通用主题--> <style name="Theme.Common.Dialog" parent="android:style/Theme.Dialog"> <!--背景颜色和透明程度--> <item name="android:windowBackground">@android:color/transparent</item> <!--是否去除标题--> <item name="android:windowNoTitle">true</item> <!--是否去除边框--> <item name="android:windowFrame">@null</item> <!--是否浮现在activity之上--> <item name="android:windowIsFloating">true</item> <!--是否模糊--> <item name="android:backgroundDimEnabled">true</item> </style>
其实之前写过dialog的博客
和第二种是差不多的
实验了很久
找到了很好的方案