自定dialog 布局没有居中解决方案

自定义的 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” 不起作用。

猜你喜欢

转载自blog.csdn.net/ff_hh/article/details/88355932