- 给dialog设置下面的样式,核心就是将
android:windowIsFloating
设置为false。
<style name="MyDialog" parent="Theme.AppCompat.Dialog">
<!-- 根据需求设置软键盘模式-->
<item name="android:windowSoftInputMode">adjustResize</item>
<!--windowIsFloating为false时,WindowInsets以及沉浸式生效-->
<item name="android:windowIsFloating">false</item>
<!--当windowIsFloating为false时必须设置下面两个属性,否则崩溃-->
<item name="android:windowActionBar">true</item>
<item name="windowActionBar">true</item>
<!--当windowIsFloating为false时,设置该属性也可以-->
<item name="windowNoTitle">true</item>
</style>
- 在dialog的
onCreate
方法中调用supportActionBar?.hide()
隐藏actionBar - 通过上面两步后,就可按照activity中修改window的方式去修改dialog的window(如何在activity中开启沉浸式,透明状态栏,设置软键盘等需求可以查阅相关资料,本章解决解决的是这些方法在dialog不生效的问题)
另外:
<item name="android:windowIsFloating">false</item>属性导致window的宽高变为match