1. 程式人生 > 實用技巧 >異常記錄-Dialog樣式踩坑

異常記錄-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>

最好是需要什麼設定什麼,指不定多少坑。