Androidアプリ開発

画面サイズいっぱいの
DialogFragmentを表示する

この記事は約13分で読めます。
記事内に広告が含まれています。
スポンサーリンク

この記事は Androidスマホ用のアプリ開発の中で、
今後の開発で再使用性が高いと思われるコーディングをまとめたものです。
Java での開発経験、XML構文規則、Android のアプリ開発経験がある方を対象としています。
Android のアプリ開発でお役にたててれば、嬉しいです。
(これから Android のアプリ開発や Java での開発を始めたい方への案内は、
記事の最後で紹介します)

この記事のテーマ


DialogFragmentを画面サイズいっぱい表示する

頭を使う仕事の休憩には、甘いお菓子がおススメです♪

ポイント

DialogFragment は、Activity Fragment などの画面から、画面項目の入力やリスト選択などの子画面として呼び出して、使用します。
用途として、ユーザーによる意思決定や追加情報の入力を求める小さなウィンドウを想定しているため、通常の使用方法では、画面サイズいっぱいに表示することができません。
ここでは、画面サイズいっぱいに表示する方法について、紹介します。

DialogFragmentの表示

DialogFragment も、ActivityFragment と同様に、画面レイアウトをレイアウトXMLに記述します。
レイアウトXMLで画面サイズを
match_parent と指定しても、画面サイズいっぱいには表示されません。

幅が画面サイズいっぱいでなく、余白がある状態

通常のダイアログを表示する DialogFragment のコーディング

public class CustomDialogEdit extends DialogFragment {
    :
    @NonNull
    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        : 
        Dialog dialog = new Dialog(getActivity());
        dialog.getWindow().requestFeature(Window.FEATURE_NO_TITLE);
        dialog.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN);
        dialog.setContentView(R.layout.dialog_edit);
        dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
        dialog.setCanceledOnTouchOutside(true);
        :
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <LinearLayout
        android:id="@+id/dialog"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_marginTop="8dp"
        android:layout_marginLeft="8dp"
        android:layout_marginRight="8dp"
        android:paddingBottom="8dp"
        android:gravity="center_horizontal"
        android:orientation="vertical">
    :
    </LinearLayout>
    <Button
        android:id="@+id/dialog_close"
        android:layout_width="30dp"
        android:layout_height="30dp"
        android:layout_alignParentEnd="true"
        android:layout_alignParentTop="true"
        android:background="@drawable/ic_round_cancel"/>
</RelativeLayout>

画面サイズいっぱいにダイアログを表示する

画面サイズいっぱいにダイアログを表示するには、DisplayMetrics を使用して、スマホ本体の画面サイズを取得し、取得したサイズでレイアウトパラメータ(LayoutParams)を作成します。
作成したレイアウトパラメータを
Dialog にセットすることで、画面サイズいっぱいのダイアログとして表示できるようになります。

閉じる(×)の表示分だけを余白として、画面サイズの幅いっぱいで表示

画面サイズいっぱいにダイアログを表示する DialogFragment のコーディング

public class CustomDialogList extends DialogFragment {
    :
    @NonNull
    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        :
        Dialog dialog = new Dialog(getActivity());
        dialog.getWindow().requestFeature(Window.FEATURE_NO_TITLE);
        dialog.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN);
        dialog.setContentView(R.layout.dialog_list);
        DisplayMetrics displayMetrics = getResources().getDisplayMetrics();
        int dialogWidth = displayMetrics.widthPixels;
        int dialogHeight = displayMetrics.heightPixels;
        WindowManager.LayoutParams layoutParams = dialog.getWindow().getAttributes();
        layoutParams.width = (Math.min(dialogWidth, dialogHeight));
        dialog.getWindow().setAttributes(layoutParams);
        dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
        dialog.setCanceledOnTouchOutside(true);
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_marginTop="8dp"
        android:layout_marginLeft="8dp"
        android:layout_marginRight="8dp"
        android:paddingBottom="8dp"
        android:gravity="center_horizontal"
        android:orientation="vertical">
        :     
    </LinearLayout>
    <Button
        android:id="@+id/dialog_close"
        android:layout_width="30dp"
        android:layout_height="30dp"
        android:layout_alignParentEnd="true"
        android:layout_alignParentTop="true"
        android:background="@drawable/ic_round_cancel"/>
</RelativeLayout>

今回は、ここまでです。

DialogFragmentを画面サイズいっぱい表示している Androidアプリです。

誤字脱字、意味不明でわかりづらい、
もっと詳しく知りたいなどのご意見は、
このページの最後にある
コメントか、
こちらから、お願いいたします♪

ポチッとして頂けると、
次のコンテンツを作成する励みになります♪

ブログランキング・にほんブログ村へ

これからAndroidのアプリ開発やJavaでの開発を始めたい方へ

初めての Android のアプリ開発では、アプリケーション開発経験がない方や、
アプリケーション開発経験がある方でも、Java や C# などのオブジェクト指向言語が初めての方は、
書籍などによる独学ではアプリ開発できるようになるには、
かなりの時間がかかりますので、オンラインスクールでの習得をおススメします。

未経験者からシステムエンジニアを目指すのに最適かと、
まずは無料相談から♪

未経験者からプログラマーを目指すのに最適かと、
まずは無料カウンセリングから♪

カリキュラムとサポートがしっかりしています、
お得なキャンペーンとかいろいろやっています♪

ゲーム系に強いスクール、UnityやUnrealEngineを習得するのに最適かと、
まずは無料オンライン相談から♪

参考になったら、💛をポッチとしてね♪

スポンサーリンク
msakiをフォローする
スポンサーリンク

コメント欄

タイトルとURLをコピーしました