Dialog顯示寬度鋪滿螢幕寬度的設定
阿新 • • 發佈:2019-02-18
在專案中,彈出分享面板時,覺著使用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>
全文結束!