我正在尝试一个非常简单的应用,我想要显示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
的右边缘对齐。
这是我的问题的图像。任何方向或解决方案都将非常受欢迎。
答案 0 :(得分:0)
起初难以置信的问题。首先,对话框确实与窗口的右上角对齐。它出现偏移的原因是它周围有阴影(请注意,前棒棒糖设备和运行棒棒糖及以上设备之间的阴影宽度各不相同,类似于Android版本之间对话框ui的变化)。
使用DialogFragment
中的这一行使onCreateView(..)
的背景透明时,这一点非常明显:
getDialog().getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));
选项是将背景颜色设置为透明后,将自己的阴影应用于DialogFragment窗口。