小编典典

如何设置DialogFragment的宽高?

all

假设我DialogFragment在一个名为的 xml 布局文件中指定了 my
的布局,并将其根视图的和值my_dialog_fragment.xml指定为固定值(例如)。然后我在我的方法中膨胀这个布局,如下所示:layout_width``layout_height``100dp``DialogFragment``onCreateView(...)

View view = inflater.inflate(R.layout.my_dialog_fragment, container, false);

可悲的是,我发现当我DialogFragment出现时,它不尊重其 xml
布局文件中指定的layout_widthlayout_height值,而是根据其内容缩小或扩展。任何人都知道我是否或如何让我DialogFragment尊重其
xml 布局文件中指定的layout_widthlayout_height值?目前,我必须Dialog
myDialogFragmentonResume()方法中指定 another 的宽度和高度,如下所示:

getDialog().getWindow().setLayout(width, height);

这样做的问题是我必须记住对两个地方的宽度和高度进行任何未来的更改。


阅读 300

收藏
2022-06-23

共1个答案

小编典典

如果您直接从资源值转换:

int width = getResources().getDimensionPixelSize(R.dimen.popup_width);
int height = getResources().getDimensionPixelSize(R.dimen.popup_height);        
getDialog().getWindow().setLayout(width, height);

然后在对话框的布局中指定 match_parent:

android:layout_width="match_parent"
android:layout_height="match_parent"

你只需要担心一个地方(把它放在你的DialogFragment#onResume)。它并不完美,但至少它适用于将 RelativeLayout
作为对话框布局文件的根。

2022-06-23