注:转载请注明来源!
真的,有些坑你不亲自去踩,可能你永远都不知道,有些坑真的很奇怪。
这里先上一段基本代码:
Dialog dialog;
dialog = new Dialog(context);
View view=LayoutInflater.from(context).inflate(R.layout.layout_dialog,null);
dialog.setContentView(view);
dialog.show();
很基本的一段代码,看似没什么问题。
坑一:view的布局文件明明将大小写固定了或者wrap_content,但是执行dialog.show()的时候,还是填满了屏幕。
我的解决办法:将view写成自定义view的形式。例如:
public class OderView extends RelativeLayout { public OderView(Context context) { super(context); init(context); } public OderView(Context context, AttributeSet attrs) { super(context, attrs); init(context); } public OderView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); init(context); } private void init(Context context) { LayoutInflater.from(context).inflate(R.layout.layout_dialog, this, true); } }
坑二:依然是布局的问题,一个很正常的布局,但是展示出来却带有背景边框?
解决办法:给dialog添加主题 例如:
dialog = new Dialog(mContext, R.style.loading_dialog);dialog主题代码如下:重点已经标出<style name="loading_dialog" parent="Animation.AppCompat.Dialog"> <item name="android:windowIsFloating">true</item> <item name="android:windowIsTranslucent">true</item> <item name="android:windowNoTitle">true</item> <item name="android:backgroundDimEnabled">true</item> <item name="android:windowFullscreen">false</item> <item name="android:windowContentOverlay">@null</item> <item name="android:background">@android:color/transparent</item> <item name="android:windowBackground">@android:color/transparent</item> <item name="android:windowFrame">@null</item> </style>坑三:总是带有奇怪的背景解决办法:主题中添加如下代码
< item name= "android:background" >@android:color/transparent</ item ><item name="android:windowBackground">@android:color/transparent</item>