自定义的 dialog 忽然跑到左上角了?
- 网上提供的解决方案解决了部分手机适配
Window dialogWindow = getWindow();
dialogWindow.setGravity(Gravity.CENTER);
WindowManager.LayoutParams lp = dialogWindow.getAttributes();
lp.width = ViewGroup.LayoutParams.WRAP_CONTENT;
lp.height = ViewGroup.LayoutParams.WRAP_CONTENT;
lp.gravity = Gravity.CENTER;
dialogWindow.setAttributes(lp)
但是小米手机 dialog 出现偏左的现象
开启试图查看原因是内容没有占满 dialog 的全部内容,
实现方式
FrameLayout.LayoutParams vLp = new FrameLayout.LayoutParams(
FrameLayout.LayoutParams.WRAP_CONTENT, FrameLayout.LayoutParams.WRAP_CONTENT);
vLp.gravity = Gravity.CENTER;
setContentView(grabDialog, vLp);
原理
使用 setContentView(View view) 的重载方法。
setContentView(View view, ViewGroup.LayoutParams lp);
其实是将该布局添加到 FrameLayout 布局中,所以可以直接设置布局的加载限制
注意
xml 设置了android:layout_gravity=“center” 不起作用。