1. 程式人生 > >Dialog顯示寬度鋪滿螢幕寬度的設定

Dialog顯示寬度鋪滿螢幕寬度的設定

在專案中,彈出分享面板時,覺著使用Dialog比使用Popuwindow更好,所以使用Dialog彈出分享的面板,但是發現在小米Note3手機上,彈出的dialog的寬度老是和螢幕的寬度有一些距離,高度也是。
在搜尋使用了百度和google上的大部分程式碼測試之後,發現還是沒有解決問題。。。終於讓我看到一篇部落格。。。。徹底解決了這個問題。。。但是那個部落格我忘記收藏了。。。SORRY!
所以寫下來程式碼記錄一下吧。希望可以幫到和我遇到同樣問題的人。。。
我沒有設定Dialog的樣式什麼的。就是寫個自定義的Dialog。只是在它show之後,添加了一些屬性設定。。

程式碼設定如下:

  ShareDialog  mShareDialog = new ShareDialog(DetailActivity.this
, shareBtnListener); mShareDialog.show();//這裡替換成你自己的dialog就行了。。 // 設定寬度為屏寬、靠近螢幕底部。 Window window = dialog.getWindow(); //設定dialog彈出的動畫,從螢幕底部彈出 window.setWindowAnimations(R.style.take_photo_anim); //最重要的一句話,一定要加上!要不然怎麼設定都不行! window.setBackgroundDrawableResource(android.R.color.transparent);
WindowManager.LayoutParams wlp = window.getAttributes(); Display d = window.getWindowManager().getDefaultDisplay(); //獲取螢幕寬 wlp.width = (int) (d.getWidth()); //寬度按螢幕大小的百分比設定,這裡我設定的是全屏顯示 wlp.gravity = Gravity.BOTTOM; if (wlp.gravity == Gravity.BOTTOM) wlp.y = 0; //如果是底部顯示,則距離底部的距離是0 window.setAttributes
(wlp);

take_photo_anim 的程式碼

 <!--分享面板的彈出動畫-->
    <style name="take_photo_anim" parent="android:Animation">
        <item name="android:windowEnterAnimation">@anim/pop_enter_anim</item>
        <item name="android:windowExitAnimation">@anim/pop_exit_anim</item>
    </style>

在res下面新建anim資料夾,pop_enter_anim.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">

    <translate
        android:duration="300"
        android:fromYDelta="100%p"
        android:toYDelta="0" />
    <alpha
        android:duration="300"
        android:fromAlpha="0.0"
        android:toAlpha="1.0" />
</set>

pop_exit_anim.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">

    <translate
        android:duration="300"
        android:fromYDelta="0"
        android:toYDelta="50%p" />
    <alpha
        android:duration="300"
        android:fromAlpha="1.0"
        android:toAlpha="0.0" />

</set>

全文結束!