异常记录-Dialog样式踩坑

好久没记录文档了,拖了老半个月,终于空下来时间,为了避免以后踩坑,必须记录记录。

背景:

为activity设置样式为弹窗activity

异常一:

activity设置style后,布局不能够正常显示,由于固定了activity的高度(例如500),当高度超出500后,布局展示异常,只展示底部布局。

异常二:

在有虚拟按键手机上弹出该对话框,对话框与布局会重叠在一起

异常代码如下:

 <!-- ActionSheet 对话框样式-->
    <style name="YTDialogActivityStyle" parent="AppTheme">
        <item name="android:windowBackground">@android:color/transparent</item>
        <item name="android:windowContentOverlay">@null</item>
        <!-- 浮于Activity之上 -->
        <item name="android:windowIsFloating">true</item>
        <!-- 边框 -->
        <item name="android:windowFrame">@null</item>
        <item name="android:windowFullscreen">false</item>
        <item name="android:navigationBarColor">@color/transparent</item>
        <item name="android:statusBarColor">@color/transparent</item>
        <!-- Dialog以外的区域模糊效果 -->
        <item name="android:backgroundDimEnabled">true</item>
        <!-- 无标题 -->
        <item name="android:windowNoTitle">true</item>
        <!-- 半透明 -->
        <item name="android:windowIsTranslucent">true</item>
        <item name="android:layout_gravity">bottom</item>
        <item name="android:layout_width">match_parent</item>
        <!-- ActionSheet进入及退出动画 -->
        <item name="android:windowAnimationStyle">@style/YTDialogActivityAnimation</item>
    </style>

原因分析:

异常一:经排查发现,是"android:layout_gravity"属性设置导致,修改为top可解决该问题。

异常二:"android:windowIsFloating"属性设置导致,修改为false可解决问题。

修改后代码:

    <!-- ActionSheet 对话框样式-->
    <style name="YTDialogActivityStyle" parent="AppTheme">
        <item name="android:windowBackground">@android:color/transparent</item>
        <!-- 无标题 -->
        <item name="android:windowNoTitle">true</item>
        <!-- 半透明 -->
        <item name="android:windowIsTranslucent">true</item>
        <!-- ActionSheet进入及退出动画 -->
        <item name="android:windowAnimationStyle">@style/YTDialogActivityAnimation</item>
    </style>

最好是需要什么设置什么,指不定多少坑。

 
原文地址:https://www.cnblogs.com/fangg/p/13608771.html