AndroidのフルスクリーンDialogFragment質問する

AndroidのフルスクリーンDialogFragment質問する

ほぼフルスクリーンの DialogFragment を表示しようとしています。 しかし、どういうわけかそれができません。

私がフラグメントを表示する方法は、Android開発者ドキュメントから直接引用したものです。

FragmentManager f = ((Activity)getContext()).getFragmentManager();
FragmentTransaction ft = f.beginTransaction();
Fragment prev = f.findFragmentByTag("dialog");
if (prev != null) {
    ft.remove(prev);
}
ft.addToBackStack(null);

// Create and show the dialog.
DialogFragment newFragment = new DetailsDialogFragment();
newFragment.show(ft, "dialog");

フラグメント内の RelativeLayout を fill_parent と minWidth および minHeight に設定しようとしただけであることはわかっています。

<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"  
    android:minWidth="1000px" 
    android:minHeight="600px"
    android:background="#ff0000">

DialogFragment が画面の大部分を占めることを期待しています。しかし、垂直方向にのみサイズ変更し、水平方向には一定の幅までしかサイズ変更できないようです。

ここで提案されているように、コードでウィンドウ属性を設定することも試みました。http://groups.google.com/group/android-developers/browse_thread/thread/f0bb813f643604ecしかし、これも役に立ちませんでした。

私は Android がダイアログを処理する方法について、おそらく何かを誤解していると思います。Android についてはまったくの初心者です。どうすればこのようなことができるでしょうか? 目標を達成するための別の方法はありますか?


Android デバイス:
Asus EeePad Transformer
Android 3.0.1


アップデート:フラグメントに次のコードを追加することで、フルスクリーンに表示できるようになりました。

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setStyle(STYLE_NO_FRAME, android.R.style.Theme_Holo_Light);
}

残念ながら、これは私が望んでいるものとは少し違います。背景を表示するために、ダイアログの周囲に小さな「パディング」が絶対に必要です。

それを実現する方法について何かアイデアはありますか?

ベストアンサー1

DialogFragmentを全画面で表示するには

onStartDialogFragment を次のようにオーバーライドします。

@Override
public void onStart()
{
    super.onStart();
    Dialog dialog = getDialog();
    if (dialog != null)
    {
        int width = ViewGroup.LayoutParams.MATCH_PARENT;
        int height = ViewGroup.LayoutParams.MATCH_PARENT;
        dialog.getWindow().setLayout(width, height);
    }
}

そしてこの投稿に心から感謝します:アンドロイドのフルスクリーンダイアログフラグメントの謎

おすすめ記事