ほぼフルスクリーンの 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を全画面で表示するには
onStart
DialogFragment を次のようにオーバーライドします。
@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);
}
}
そしてこの投稿に心から感謝します:アンドロイドのフルスクリーンダイアログフラグメントの謎