将一个 DialogFragment 放在另一个 DialogFragment 的上方或下方,可以通过设置 DialogFragment 的样式和位置来实现。下面是一个示例的解决方案:
ChildDialogFragment childDialogFragment = new ChildDialogFragment();
FragmentTransaction transaction = getChildFragmentManager().beginTransaction();
transaction.add(R.id.container, childDialogFragment).commit();
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setStyle(DialogFragment.STYLE_NORMAL, R.style.ChildDialogFragmentStyle);
}
在 res/values/styles.xml 文件中定义 ChildDialogFragment 的样式 ChildDialogFragmentStyle,可以自定义样式的背景、边距等属性。
@Override
public void onResume() {
super.onResume();
Dialog dialog = getDialog();
Window window = dialog.getWindow();
WindowManager.LayoutParams params = window.getAttributes();
params.gravity = Gravity.BOTTOM; // 改变 ChildDialogFragment 的位置
window.setAttributes(params);
}
通过修改 params.gravity 的值,可以将 ChildDialogFragment 放置在上方(Gravity.TOP)或下方(Gravity.BOTTOM)。
至此,你就可以将一个 DialogFragment 放在另一个 DialogFragment 的上方或下方了。根据实际需求,可以调整样式、位置和布局来满足具体的设计要求。
参考链接:
领取专属 10元无门槛券
手把手带您无忧上云