DialogFragment设置Dialog的高度

时间:2012-01-22 00:59:53

标签: android android-dialogfragment

我刚刚使用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;
}

谢谢,

4 个答案:

答案 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属性。它可能导致头痛,但幸运的是很容易解决。