Android - DialogFragment,如何与Activity的优势保持一致?

时间:2016-11-16 14:03:26

标签: android android-dialogfragment

我正在尝试一个非常简单的应用,我想要显示DialogFragment。不过,我想将DialogFragment的右边距与Activity的右边缘对齐。我使用布局重力将Dialog的窗口对齐到右侧和顶部:

public class MyDialogFragment extends DialogFragment {

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        super.onCreateView(inflater, container, savedInstanceState);
        View view = inflater.inflate(R.layout.activity_main, container, false);
        getDialog().getWindow().setGravity(Gravity.RIGHT | Gravity.TOP);
        return view;
    }

} 

然而,有差距'默认情况下,在DialogFragment的右边缘与Activity的右边之间。我尝试了一些SO帖子,但似乎没有一个对我有用:

Changing position of the Dialog on screen android

Show AlertDialog in any position of the screen

我正在尝试将对话框锚定到特定的坐标对,但我没有成功使用这种方法。我想要做的只是将对话框的右边距与Activity的右边缘对齐。

这是我的问题的图像。任何方向或解决方案都将非常受欢迎。

enter image description here

1 个答案:

答案 0 :(得分:0)

起初难以置信的问题。首先,对话框确实与窗口的右上角对齐。它出现偏移的原因是它周围有阴影(请注意,前棒棒糖设备和运行棒棒糖及以上设备之间的阴影宽度各不相同,类似于Android版本之间对话框ui的变化)。

使用DialogFragment中的这一行使onCreateView(..)的背景透明时,这一点非常明显:

getDialog().getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));

选项是将背景颜色设置为透明后,将自己的阴影应用于DialogFragment窗口。