百度上大部分写着只要增加
getWindow().setLayout(WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.WRAP_CONTENT);就可以让自定义的Dialog 宽度等于屏幕宽度
实际上设置后左右依然有空隙 查看源码后发现有这么一段代码 (注意绿色的注释)
Dialog(@NonNull Context context, @StyleRes int themeResId, boolean createContextThemeWrapper) { if (createContextThemeWrapper) { if (themeResId == 0) { /** * 如果不设置Dialog的Theme 那么就会使用默认的Theme 默认的Theme左右是设置了padding的 **/ final TypedValue outValue = new TypedValue(); context.getTheme().resolveAttribute(R.attr.dialogTheme, outValue, true); themeResId = outValue.resourceId; } mContext = new ContextThemeWrapper(context, themeResId); } else { mContext = context; } mWindowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE); final Window w = new PhoneWindow(mContext); mWindow = w; w.setCallback(this); w.setOnWindowDismissedCallback(this); w.setWindowManager(mWindowManager, null, null); w.setGravity(Gravity.CENTER); mListenersHandler = new ListenersHandler(this); }
所以只要给自定义Diglog设置一个主题就可以了
public TabDialog(Context context) { super(context,R.style.TabDialog); init(); }
<style name="TabDialog"> </style>