天天看点

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 = ; 
      //如果是底部显示,则距离底部的距离是
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>
           

全文结束!