我刚刚使用DialogFragment创建了第一个Dialog。
一切都很好,除了我不能让Dialog包装它的布局。
我的布局将所有元素的高度设置为wrap_content
。
在MyFragmentDialog
我甚至找不到一种方法,暗示它可以用来设置FragmentDialog
的高度。我错过了什么?如何使DialogFragment适合它的内容?
DialogFrament
的{{1}}方法:
onCreateView
这是布局:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
// Set title for this dialog
getDialog().setTitle("Backup & Restore");
getDialog().setCancelable(true);
View v = inflater.inflate(R.layout.backup_restore, container, false);
TextView msg = (TextView) v.findViewById(R.id.br_label_message);
msg.setText("Backups are placed in the Downloads Directory:\n" + BACKUP_PATH.getAbsolutePath());
// TextView files_label = (TextView) v.findViewById(R.id.label_restore);
Spinner files = (Spinner) v.findViewById(R.id.br_restore_file);
if (BACKUP_PATH.exists()) {
FilenameFilter filter = new FilenameFilter() {
public boolean accept(File dir, String filename) {
File sel = new File(dir, filename);
return filename.contains(FTYPE) || sel.isDirectory();
}
};
mFileList = BACKUP_PATH.list(filter);
} else {
mFileList = new String[0];
}
ArrayAdapter<CharSequence> adapter = new ArrayAdapter<CharSequence>(getActivity(), android.R.layout.simple_spinner_item, mFileList);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
files.setAdapter(adapter);
files.setOnItemSelectedListener(this);
Button backup = (Button) v.findViewById(R.id.br_backup_btn);
Button restore = (Button) v.findViewById(R.id.br_restore_btn);
Button cancel = (Button) v.findViewById(R.id.br_cancel_btn);
backup.setOnClickListener(this);
restore.setOnClickListener(this);
cancel.setOnClickListener(this);
return v;
}
谢谢,
答案 0 :(得分:29)
LinearLayout
尽管设置了一个高度,但DialogFragment
似乎占用的空间比我想要的还多。我将布局切换为RelativeLayout
,内容Dialog
似乎调整大小以适应内容。
答案 1 :(得分:6)
您可以在dialogFragment的onResume中添加布局大小,使其适用于所有类型的布局:
@Override
public void onResume()
{
super.onResume();
Window window = getDialog().getWindow();
window.setLayout(300, 300);
window.setGravity(Gravity.CENTER);
}
答案 2 :(得分:4)
我对Dialog api进行了一次跳跃,所以我当然不确定,但你可以尝试在对话框中调用getWindow,然后调用setLayout(width,height)
getDialog().getWindow().setLayout(300,300);
答案 3 :(得分:0)
我没有看到您的LinearLayout标记的顶部,但我看到所有需要的是
的情况android:orientation="vertical"
XML属性。它可能导致头痛,但幸运的是很容易解决。